簡體   English   中英

ASP.NET MVC:覆蓋單個操作的授權過濾器角色

[英]ASP.NET MVC: Override authorization filter roles for single action

我有一個像這樣注釋控制器類的授權過濾器:

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

但是,有一種操作用戶只需要一種權限:

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

由於當前設置,只有注釋類的過濾器被確認並執行適當的重定向。 有沒有辦法僅針對特定操作覆蓋它,還是應該從控制器中刪除過濾器並為每個操作定義它?

您可以按照 此處所述影響應用過濾器的順序。 對於您的用例,將Order添加到您的屬性可能可以解決問題:

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

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

具有最低Order的過濾器將首先運行。

編輯

我剛剛發現Order不會有多大好處。 兩個過濾器仍會執行(僅以相反的順序)。 在控制器級別覆蓋過濾器:看看這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM