web-dev-qa-db-ja.com

ASP.NETMVCロールの承認

コントローラクラスのデフォルトのロールを「管理者、コンテンツ編集者」にしたい

[Authorize(Roles = "Administrators, Content Editor")]

上記の属性でコントローラーを装飾することでこれを行いました。ただし、すべての人が利用できるようにしたいアクションが1つあります(つまり、「表示」)。すべてのユーザー(完全に許可されていないユーザーを含む)がこのアクションにアクセスできるように、ロールをリセットするにはどうすればよいですか。

注:上記のauthorize属性を使用して、他のすべてのアクションを装飾できることはわかっていますが、常にそうする必要はありません。コントローラーのすべてのアクションをデフォルトで使用できないようにしたいので、誰かがアクションを追加した場合は、一般の人々が利用できるようにするために検討された決定を下す必要があります。

18
Mr Grok

MVC4には、まさにこの[AllowAnonymous]を意味する新しい属性があります。

[AllowAnonymous]
public ActionResult Register()

http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute。 aspx

16
Simon_Weaver

アクションメソッドにAuthorize属性を配置できます。クラスレベルだけではありません。

そのため、属性をコントローラークラスから保護するアクションメソッドだけに移動します。

4
Kieron

これまでに考えられる唯一の解決策は、別のコントローラーを作成して登録し、匿名アクセス用と許可アクセス用のコントローラーを用意することですが、それは私が望んでいたほどエレガントではありません。

0
Mr Grok