我已經實現了我自己的自定義授權屬性。如何在控制器和操作級別使用Authorize屬性?
該屬性應用於控制器級別和動作級別。
這裏是什麼,我需要做的一個例子:
[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
[ClaimsAuthorize(Roles = "Administrators")]
public ActionResult AdministrativeTask()
{
return View();
}
public ActionResult SomeOtherAction()
{
return View();
}
}
目前,如果用戶具有管理員角色,但不是AdvancedUsers角色,他就不能執行「管理任務」。
即使用戶未在控制器級別授權,如何更改此行爲以在操作級別執行安全檢查?
目前,我能想到的唯一解決方案是實現2個屬性:一個用於保護控制器,另一個用於保護操作。然後我會玩Order屬性來首先執行動作級別的屬性。
但是,如果可能的話,我寧願使用單個屬性的解決方案。
通過來自控制器級移除。當行動是決定的時候,你爲什麼希望在控制器層面擁有它? –
我還沒有對此進行過測試,但可能通過在行爲**上的自定義授權屬性**之前列出'[AllowAnonymous]'來獲得該行爲的授權。 –
在控制器級別,您可以檢查特定操作方法是否裝有您的特殊屬性,然後允許調用該方法 –