私のウェブサイトの管理セクションのURLは、常にAdmin/
で始まります。 ASP.NET MVCでURLのこの部分を使用してユーザーへのアクセスを制限することは可能ですか?ASP.NET MVC:URLを使用したアクセスを制限する
明らかに私は[Authorize(Roles = "Administrator")]
を適切なコントローラとアクションに保ちますが、コードにステップインするのではなくURLを見るだけであれば、アプリケーションの方が速いのだろうかと思います。
私のウェブサイトの管理セクションのURLは、常にAdmin/
で始まります。 ASP.NET MVCでURLのこの部分を使用してユーザーへのアクセスを制限することは可能ですか?ASP.NET MVC:URLを使用したアクセスを制限する
明らかに私は[Authorize(Roles = "Administrator")]
を適切なコントローラとアクションに保ちますが、コードにステップインするのではなくURLを見るだけであれば、アプリケーションの方が速いのだろうかと思います。
スティーブン・サンダーソンの本の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するための手段と、アプリケーションが認証されていない訪問者やロール '管理者とした以外の 任意の他の訪問者へのアクセスを拒否します。
これで動作しますが、あなたは現在のルーティングモデルに認証を結びます。アクションを承認することの美しさは、現在使用しているURL構造から機能(実際にはコントロールするもの)を抽象化することです。
また、この機能を単体テストできることを意味します。あなただけ作るから自分を保存している場合は、URLでそれをしたい場合、あなたはすでにそれが正しいやった、今
[Authorize(Roles = "Administrator")]
public class BaseAdminController : Controller {
}
、しかし:あなたの管理コントローラのすべてを持つあなたはBaseAdminControllerを作成することができます
は、この拡張しますそれはすべての上にあることを確認してください、上記の方法です。次に、テストでは、Admin名前空間内のすべてのコントローラがこのコントローラを拡張していることを確認できます。
許可するためにURLを使用する利点はありますか? – ajbeaven