私は ASP.NET MVC3 を学んでおり、モデル/コンテキスト用のコントローラーを作成しました。ただし、誰でもこれらのページに移動して使用できます。これらのページの権限を設定するにはどうすればよいですか?
2 に答える
AuthorizeAttributeは防御の最前線になります。グループ メンバーシップまたはユーザー名に基づいてアクセスを許可できます。Code Access Security / Principal Permission Attributes とよく似ていますが、それほど難しくありません。
例:
// Allow Everybody in
public ActionResult Index ()
{}
// Allow only Editors/Admin to post edits back to controller.
[HttpPost]
[Authorize(Roles="Admin,Editor"]
public ActionResult Edit(EditViewModel vm)
{}
これらはクラスまたはメソッド レベルで使用できるため、許可されたユーザーのみがアプリの特定のコントローラーを使用できるようにするベース コントローラーを使用できます。
同じグループまたはユーザーを何度も使用していることに気付いた場合は、それらのグループが事前定義されている AuthorizeAttribute のオーバーライドを作成して、スペルを間違えたり忘れたりしないようにします。これはコードをドライアップすることにもなります。これは常に素晴らしいことです。
Authorize 属性を使用して権限を制限できます。多くの場合、これは基本クラスから継承されます。これが最も一般的で推奨されます。
ActionFilter 属性を使用して OnActionExecuting をオーバーライドし、そこにカスタム ロジックを設定できます。可能ですが、推奨されません。
他にもたくさんの方法がありますが、前の 2 つが MVC の主な方法です。