2009-09-02 13 views
3

私のウェブサイトの管理セクションのURLは、常にAdmin/で始まります。 ASP.NET MVCでURLのこの部分を使用してユーザーへのアクセスを制限することは可能ですか?ASP.NET MVC:URLを使用したアクセスを制限する

明らかに私は[Authorize(Roles = "Administrator")]を適切なコントローラとアクションに保ちますが、コードにステップインするのではなくURLを見るだけであれば、アプリケーションの方が速いのだろうかと思います。

答えて

2

スティーブン・サンダーソンの本のPro ASP.NET MVC Frameworkで答えが見つかりました。

web.configファイルに次のコードを挿入します。

<location path ="Admin"> 
    <system.web> 
    <authorization> 
     <deny users="?"/> 
     <allow roles="Administrator"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

これは~/Admin/*に一致するすべてのURLするための手段と、アプリケーションが認証されていない訪問者やロール '管理者とした以外の 任意の他の訪問者へのアクセスを拒否します。

1

これで動作しますが、あなたは現在のルーティングモデルに認証を結びます。アクションを承認することの美しさは、現在使用しているURL構造から機能(実際にはコントロールするもの)を抽象化することです。

また、この機能を単体テストできることを意味します。あなただけ作るから自分を保存している場合は、URLでそれをしたい場合、あなたはすでにそれが正しいやった、今

[Authorize(Roles = "Administrator")] 
public class BaseAdminController : Controller { 
} 

、しかし:あなたの管理コントローラのすべてを持つあなたはBaseAdminControllerを作成することができます

+0

許可するためにURLを使用する利点はありますか? – ajbeaven

1

は、この拡張しますそれはすべての上にあることを確認してください、上記の方法です。次に、テストでは、Admin名前空間内のすべてのコントローラがこのコントローラを拡張していることを確認できます。

関連する問題