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--基于角色的授权相关推荐
- ASP.NET Core 基于角色的 JWT 令牌
原文:https://bit.ly/3vYljq3 作者:Rick Strahl 翻译:精致码农-王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知 ...
- ASP.NET Core 2.1中基于角色的授权
授权是来描述用户能够做什么的过程.例如,只允许管理员用户可以在电脑上进行软件的安装以及卸载.而非管理员用户只能使用软件而不能进行软件的安装以及卸载.它是独立的而又与验证配合使用,需要身份验证机制.对于 ...
- 快速理解ASP.NET Core的认证与授权
ASP.NET Core的认证与授权已经不是什么新鲜事了,微软官方的文档对于如何在ASP.NET Core中实现认证与授权有着非常详细深入的介绍.但有时候在开发过程中,我们也往往会感觉无从下手,或者由 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
Asp.Net Core基于JWT认证的数据接口网关Demo 近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求 ...
- ASP.NET Core 基于声明的访问控制到底是什么鬼?
从ASP.NET 4.x到ASP.NET Core,内置身份验证已从基于角色的访问控制(RBAC)转变为基于声明的访问控制(CBAC). 我们常用的HttpContext.User属性ASP.NET ...
- ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识
问题引入: 我们知道当请求通过认证模块时,会给当前的HttpContext赋予当前用户身份标识,我们在需要授权的控制器中打上[Authorize]授权标签,就可以在ControllerBase的Use ...
- Asp.net Core基于MVC框架实现PostgreSQL操作
简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...
- ASP.NET Core 基于SignalR实时通讯的前后端分离技术
环境 Visual Studio 2019 ASP.NET Core 3.1 创建项目 从菜单中选择文件>新建项目. 在创建新项目对话框中,选择ASP.NET Core Web 应用程序,然后选 ...
- ASP.NET Core 基于JWT的认证(二)
上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用. .Net Core 2.2 Visual St ...
最新文章
- 详解Oracle介质恢复的内部过程
- Java日志框架Slf4j+Log4j入门
- 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
- 知识图谱实践篇(三):D2RQ SPARQL endpoint与两种交互方式
- 7-1 最大子列和问题 (20 分)
- 70 个常见 Spring 面试题,Java 晋升必会
- (15)FPGA面试题存储器资源区别
- jetbrains ide连接服务器上的docker
- 茶 —— 一片树叶的故事(茶叶的品类)
- 【iOS】彩虹渐变色 的 Swift 实现
- CHIL-SQL-服务器 - RDBMS
- 杰奇python采集器_【教程】【含PC和WAP源码主题】杰奇1.7+关关采集器+基于Linux小说网站+Win端Samba远程采集+可用采集规则...
- 合天网安 在线实验 CTF竞赛 writeup(第一周 | 神奇的磁带、第二周 | 就差一把钥匙、CTF-WEB小技俩、第三周 | 迷了路、第四周 | Check your source code)
- 集成Google Play支付
- 【Tip】那些“想当然”的记录
- php开发地图导航,百度地图API使用方法详解
- 应用Excel实现大小写金额转换
- MPB:南农韦中组-植物根际土壤样品的非破坏性连续采集
- Celeron D的型号参考
- 从表征到行动---意向性的自然主义进路(续六)
热门文章
- 【Qt】QModbusRtuSerialMaster类
- 【C语言】控制台窗口图形界面编程(一)句柄和文本属性
- [Qt教程] 第46篇 进阶(六) 国际化
- 穿梭框的list集合 去重
- 二叉树的最近公共祖先—leetcode236
- FileMonitorKit 文件操作监控工具
- idea-jvm参数设置(有注释)
- python分析基金数据_python基金会(大数据分析),的,PYTHON,基础,选择,练习
- AttributeError: ‘str‘ object has no attribute ‘read‘
- 党在心中(turtle画图)