2011-06-21 4 views
1

私は権限の注釈で私のコントローラをタグ付けしましたが、メソッドの1つを免除したいと思います...それはできますか?どうやって?認可の例外

[Authorize(Roles="Admin")] 
public class ProductController : Controller 
{ 
    [DEAUTHORIZE] 
    public ActionResult Start(int it) 
    { ... } 

答えて

2

いいえ、これはできません。これを達成するための標準的な方法は、単に別のコントローラでStartアクションを移動させることです。別の可能性は、IFilterProviderを構築することです。これは、手動でProductControllerにベーキングするのではなく、条件付きで許可属性を適用します。たとえば、NInjectはこれを使用して、アクションフィルターの設定にpretty fluent syntaxを提供します。現在のコンテキストに基づいてconditionally apply themにすることができます。

+0

ストレート回答ありがとうございます。 NInjectを調べる...面白そうだ。 – ekkis

4

MVC 4では、AllowAnonymousAttributeが導入されました。これは、アクション呼び出し者にAuthorizeAttributeをスキップするように指示します。

[AllowAnonymous]