翻译如下:

  当创建身份时,它可以属于一个或多个角色,例如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--基于角色的授权相关推荐

  1. ASP.NET Core 基于角色的 JWT 令牌

    原文:https://bit.ly/3vYljq3 作者:Rick Strahl 翻译:精致码农-王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知 ...

  2. ASP.NET Core 2.1中基于角色的授权

    授权是来描述用户能够做什么的过程.例如,只允许管理员用户可以在电脑上进行软件的安装以及卸载.而非管理员用户只能使用软件而不能进行软件的安装以及卸载.它是独立的而又与验证配合使用,需要身份验证机制.对于 ...

  3. 快速理解ASP.NET Core的认证与授权

    ASP.NET Core的认证与授权已经不是什么新鲜事了,微软官方的文档对于如何在ASP.NET Core中实现认证与授权有着非常详细深入的介绍.但有时候在开发过程中,我们也往往会感觉无从下手,或者由 ...

  4. Asp.Net Core基于JWT认证的数据接口网关Demo

    Asp.Net Core基于JWT认证的数据接口网关Demo 近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求 ...

  5. ASP.NET Core 基于声明的访问控制到底是什么鬼?

    从ASP.NET 4.x到ASP.NET Core,内置身份验证已从基于角色的访问控制(RBAC)转变为基于声明的访问控制(CBAC). 我们常用的HttpContext.User属性ASP.NET ...

  6. ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识

    问题引入: 我们知道当请求通过认证模块时,会给当前的HttpContext赋予当前用户身份标识,我们在需要授权的控制器中打上[Authorize]授权标签,就可以在ControllerBase的Use ...

  7. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

  8. ASP.NET Core 基于SignalR实时通讯的前后端分离技术

    环境 Visual Studio 2019 ASP.NET Core 3.1 创建项目 从菜单中选择文件>新建项目. 在创建新项目对话框中,选择ASP.NET Core Web 应用程序,然后选 ...

  9. ASP.NET Core 基于JWT的认证(二)

    上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用. .Net Core 2.2 Visual St ...

最新文章

  1. 详解Oracle介质恢复的内部过程
  2. Java日志框架Slf4j+Log4j入门
  3. 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
  4. 知识图谱实践篇(三):D2RQ SPARQL endpoint与两种交互方式
  5. 7-1 最大子列和问题 (20 分)
  6. 70 个常见 Spring 面试题,Java 晋升必会
  7. (15)FPGA面试题存储器资源区别
  8. jetbrains ide连接服务器上的docker
  9. 茶 —— 一片树叶的故事(茶叶的品类)
  10. 【iOS】彩虹渐变色 的 Swift 实现
  11. CHIL-SQL-服务器 - RDBMS
  12. 杰奇python采集器_【教程】【含PC和WAP源码主题】杰奇1.7+关关采集器+基于Linux小说网站+Win端Samba远程采集+可用采集规则...
  13. 合天网安 在线实验 CTF竞赛 writeup(第一周 | 神奇的磁带、第二周 | 就差一把钥匙、CTF-WEB小技俩、第三周 | 迷了路、第四周 | Check your source code)
  14. 集成Google Play支付
  15. 【Tip】那些“想当然”的记录
  16. php开发地图导航,百度地图API使用方法详解
  17. 应用Excel实现大小写金额转换
  18. MPB:南农韦中组-植物根际土壤样品的非破坏性连续采集
  19. Celeron D的型号参考
  20. 从表征到行动---意向性的自然主义进路(续六)

热门文章

  1. 【Qt】QModbusRtuSerialMaster类
  2. 【C语言】控制台窗口图形界面编程(一)句柄和文本属性
  3. [Qt教程] 第46篇 进阶(六) 国际化
  4. 穿梭框的list集合 去重
  5. 二叉树的最近公共祖先—leetcode236
  6. FileMonitorKit 文件操作监控工具
  7. idea-jvm参数设置(有注释)
  8. python分析基金数据_python基金会(大数据分析),的,PYTHON,基础,选择,练习
  9. AttributeError: ‘str‘ object has no attribute ‘read‘
  10. 党在心中(turtle画图)