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”角色的用户。
Asp.Net Core--基于角色的授权的更多相关文章
- asp.net core 基于角色的认证登陆
一.登陆页面的Controller [Authorize(Roles = "Admin,SuperAdmin")] public class ManageController : ...
- ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...
- ASP.NET Identity 身份验证和基于角色的授权
ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在 ...
- ASP.NET Core 2.1中基于角色的授权
ASP.NET Core 2.1中基于角色的授权 授权是来描述用户能够做什么的过程.例如,只允许管理员用户可以在电脑上进行软件的安装以及卸载.而非管理员用户只能使用软件而不能进行软件的安装以及卸载.它 ...
- asp.net core系列 49 Identity 授权(上)
一.概述 授权是指用户能够访问资源的权限,如页面数据的查看.编辑.新增.删除.导出.下载等权限.ASP.NET Core 授权提供了多种且灵活的方式,包括:Razor pages授权约定.简单授权.R ...
- ASP.NET Core 基于JWT的认证(二)
ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...
- ASP.NET Core 基于JWT的认证(一)
ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...
随机推荐
- HIbernate二级缓存
一.定义: 二级缓存是进程或集群范围内的缓存,可以被所有的Session共享,是可配置的插件 二.二级缓存原理图 解析:每次从二级缓存中取出的对象,都是一个新的对象. 三.配置步骤如下: 同理:以员工 ...
- Redis-基于php简单安装使用
1.下载php相关redis扩展(apache选vc6),下载地址: https://github.com/phpredis/phpredis/downloads 2.修改php.ini,增加下面两项 ...
- WPF Popup 控件导致被遮挡内容不刷新的原因
WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...
- C/C++实践笔记 007
进制输出自己写一个_itoa 进制转换void main(){ int num = 0; scanf("%d", &num); printf("num=%i&qu ...
- 一个key 在10w k/v 找到对应的. (B-tree), 这10w放进B-tree 会有多少层.
B-tree是二叉平衡查找树,相邻两层节点层数不超过1 所有10w 即 2^16=65536 < 10w < 2^17=131072: 会有17层,最多查询17次.
- Dirac Delta Function
也称为Degenerate pdf, 退化概率密度函数. 未经考证的解释是: 当正态分布的\(\sigma \to 0\)时, 正态分布就退化为这个分布了. 定义 \[ \delta(x) = \be ...
- Asp.Net 自定义储存Session方式
介绍 由于针对于自定义Session存储方式比较少,所以整理了使用自定义Session的方式.用于构建自定义会话存储提供程序代码,而不是使用默认的 SessionStore 介绍 背景 本文使用的是m ...
- WPF基础到企业应用系列6——布局全接触
本文转自:http://knightswarrior.blog.51cto.com/1792698/365351 一. 摘要 首先很高兴这个系列能得到大家的关注和支持,这段时间一直在研究Windows ...
- ReactNative 从环境和第一个demo说起,填坑教程
一.React-Native MacOS必备环境配置: 1.安装homebrew(这东西可以理解为命令行的app商店) /usr/bin/ruby -e "$(curl -fsSL http ...
- apache2.4 绿色版环境配置。
http://jingyan.baidu.com/article/9faa723152c5d6473d28cb47.html http://jingyan.baidu.com/article/9faa ...