• 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”角色的用户。 

    
    
  • 相关阅读:
    之所以菜鸟依旧
    单点登陆
    让entityframework.extend库同时支持mysql,sqlsever
    背包算法
    JS中实现继承
    Altium Designer 生成 Mach3 G代码的程序
    test博客嵌入pbi
    testPBI报表
    html中隐藏title属性方法
    Spring mvc 中有关 Shiro 1.2.3 配置问题
  • 原文地址:https://www.cnblogs.com/duyao/p/5976197.html
Copyright © 2020-2023  润新知