2016-03-24 19 views
1

私はそうのようなコントローラクラスを注釈を付け、承認フィルターがあります。ASP.NET MVC:シングルアクションの上書きの許可フィルターの役割

:ユーザーが唯一の許可に必要つのアクションがあるしかし

[Authenticated(Roles = "read_mail", "contact_user")] 
public class MailController : Controller { ... } 

[Authenticated(Roles = "read_mail")] 
public ActionResult Inbox() { ... } 

現在設定されているため、クラスに注釈を付けるフィルタのみが承認され、適切なリダイレクトが行われます。特定のアクションのためだけにオーバーライドする方法はありますか?コントローラからフィルタを削除し、代わりにすべてのアクションにフィルタを定義する必要がありますか?

+0

はい、そのコントローラの動作レベルに適用してください –

答えて

1

hereのように、フィルタの適用順序に影響を与えることができます。最低Order

[Authenticated(Roles = "read_mail", "contact_user", Order = 1)] 
public class MailController : Controller { ... } 

[Authenticated(Roles = "read_mail", Order = 0)] 
public ActionResult Inbox() { ... } 

フィルタが最初に実行されます:あなたのユースケースは、あなたの属性にOrderを追加するために、おそらくトリックを行います。

編集

私はちょうどOrderがはるかに良いしないだろうが分かりました。どちらのフィルターも実行されます(逆の順序でのみ)。コントローラーレベルでフィルターをオーバーライドするには:this answerを見てください。

+0

ありがとうございます。それは良い読書です。 – kshep92

関連する問題