Asp.Net Core--基于角色的授权
翻譯如下:
當創建身份時,它可以屬于一個或多個角色,例如Tracy可以屬于管理員和用戶角色,而Scott可以僅屬于用戶角色。 如何創建和管理這些角色取決于授權過程的后備存儲。 角色通過ClaimsPrincipal類上的IsInRole屬性公開給開發人員。
?
添加角色檢查
?
?
基于角色的授權檢查是聲明性的 - 開發人員將它們嵌入到他們的代碼中,針對控制器中的控制器或動作,指定當前用戶必須是訪問請求資源的成員的角色。
? ?例如,以下代碼將只允許Administrator組成員的用戶進行操作的訪問。
[Authorize(Roles = "Administrator")] public class AdministrationController : Controller {}作為一個逗號分隔的列表,您可以指定多個角色:
[Authorize(Roles = "HRManager,Finance")] public class SalaryController : Controller { }此控制器只能由屬于HRManager角色或Finance角色成員的用戶訪問。
? 如果應用多個屬性,則訪問用戶必須是指定的所有角色的成員; 以下示例要求用戶必須是PowerUser和ControlPanelUser角色的成員。
[Authorize(Roles = "PowerUser")] [Authorize(Roles = "ControlPanelUser")] public class ControlPanelController : Controller { }您可以通過在操作級別應用其他角色授權屬性來進一步限制訪問:
[Authorize(Roles = "Administrator, PowerUser")] public class ControlPanelController : Controller {public ActionResult SetTime(){}[Authorize(Roles = "Administrator")]public ActionResult ShutDown(){} }在上面的代碼片段中,Administrator角色或PowerUser角色的成員可以訪問控制器和SetTime操作,但只有Administrator角色的成員才能訪問ShutDown操作。
您還可以鎖定控制器,但允許匿名,未經身份驗證的訪問各個操作。
[Authorize] public class ControlPanelController : Controller {public ActionResult SetTime(){}[AllowAnonymous]public ActionResult Login(){} }?
基于策略的角色檢查
角色條件要求也可以使用新的策略語法表示,其中開發人員在啟動時將策略注冊為授權服務配置的一部分。 這通常配置在Startup.cs文件中的ConfigureServices()。
public void ConfigureServices(IServiceCollection services) {services.AddMvc();services.AddAuthorization(options =>{options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Administrator"));}); }使用“AuthorizeAttribute”屬性上的“Policy”屬性應用策略;?
[Authorize(Policy = "RequireAdministratorRole")] public IActionResult Shutdown() {return View(); }如果要在條件需求中指定多個允許的角色,則可以將它們指定為RequireRole方法的參數;
options.AddPolicy("ElevatedRights", policy =>policy.RequireRole("Administrator", "PowerUser", "BackupAdministrator"));此示例授權屬于“Administrator”,“PowerUser”和“BackupAdministrator”角色的用戶。?
轉載于:https://www.cnblogs.com/duyao/p/5976197.html
總結
以上是生活随笔為你收集整理的Asp.Net Core--基于角色的授权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 监控命令
- 下一篇: node.js跨域问题