コントローラーに権限アノテーションをタグ付けしましたが、メソッドの 1 つを免除したいのですが、それは可能ですか? どうやって?
[Authorize(Roles="Admin")]
public class ProductController : Controller
{
[DEAUTHORIZE]
public ActionResult Start(int it)
{ ... }
コントローラーに権限アノテーションをタグ付けしましたが、メソッドの 1 つを免除したいのですが、それは可能ですか? どうやって?
[Authorize(Roles="Admin")]
public class ProductController : Controller
{
[DEAUTHORIZE]
public ActionResult Start(int it)
{ ... }
MVC 4 では、アクション呼び出し元に AuthorizeAttribute をスキップするように指示する AllowAnonymousAttribute が導入されました。
[AllowAnonymous]
いいえ、これはできません。これを実現する標準的な方法は、単純にStart
アクションを別のコントローラーに移動することです。もう 1 つの可能性は、カスタムIFilterProviderを構築することです。このカスタム IFilterProvider は、認可属性を手動ProductController
で たとえば、NInject はこれを使用して、アクション フィルターを構成するための非常に流暢な構文を提供します。現在のコンテキストに基づいて条件付きで適用できます。