asp.net core mvc权限控制:权限控制介绍
在进行业务软件开发的时候,都会涉及到权限控制的问题,asp.net core mvc提供了相关特性。
在具体介绍使用方法前,我们需要先了解几个概念:
1,claim:英文翻译过来是声明的意思,一个claim包含Type,Value两项信息。我把claim理解成一个权限的定义,比如Type=会员,Value=删除操作
2,Identity:表示用户的身份信息,比如用户名
3,Principal:我理解成认证票据,里面包含identity,claim信息。
4,Policy:英文翻译过来是政策的意思,我理解的是权限验证的一个规则,就是当前我需要如何验证权限,比如要执行当前操作,必须具有会员删除操作的claim
5,角色:一组权限的集合
6,用户:一个使用系统的账户信息
在asp.net core mvc中配置权限控制的方法:
1,引入Microsoft.AspNetCore.Identity.EntityFrameworkCore库,这个库中提供了用户,角色,登录等相关操作,并且可以进行功能扩展。
2,在startup.cs文件中注册服务接口以及中间件
public void ConfigureServices(IServiceCollection services)
{
......
services.AddIdentity<TUser, TRole>();
.....
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
......
app.UseIdentity();
......
}
TUser:系统中自定义的用户类
public class ApplicationUser: IdentityUser<int>
{
//系统中扩展的用户参数
}
TRole:系统中自定义的角色类
public class ApplicationRole: IdentityRole<int>
{
//系统扩展的角色参数
}
3,在控制器或者控制器方法上增加AuthorizeAttribute特性,配置权限控制
AuthorizeAttribute特性中包含了一个Policy配置,就是配置权限验证规则,实例如下:
[Authorize(Policy ="goods")]
public class GoodsController : Controller
{}
但是这里的goods只是规则的名称,那这个规则又是如何设置的呢?在startup.cs的ConfigureServices中使用AddAuthorization扩展方法进行配置,实例如下:
public void ConfigureServices(IServiceCollection services)
{
.....
services.AddAuthorization(config=>{
//
config.AddPolicy("goods", builder => {
                builder.AddRequirements(new ClaimsAuthorizationRequirement("goods", new string[] { "module" }));
            });
});
.....
}
AddPolicy是增加规则方法,第一个参数表示规则的名称,第二个参数是具体的规则列表,我们这里只增加了一个权限验证的
规则ClaimsAuthorizationRequirement
ClaimsAuthorizationRequirement表示一个权限规则的信息,构造方法包含两个参数,第一个参数表示cliam的type值,第二个
参数是claim的value集合,它表示验证当前用户是否具有指定type,并且具有任意一个value中指定值的claim
经过以上配置后,如果当前用户要访问GoodsController控制器(不限制方法,如果AuthorizeAttribute是使用在方法上,那只验
证对应的方法,也可以多次使用),就必须具有Claim(type=goods , value=module)的权限
到这里,我们就完成了权限控制的逻辑,以上内容只是个人理解,欢迎大家指正。
asp.net core mvc权限控制:权限控制介绍的更多相关文章
- ASP.NET Core MVC 之区域(Area)
		
区域(Area)是一个 ASP.NET MVC 功能,用于将相关功能组织为一个单独的命名空间(用于路由)和文件结构(用于视图).使用区域通过向控制器和操作添加 一个路由参数(area)来创建用于路由目 ...
 - asp.net core mvc权限控制:在视图中控制操作权限
		
在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权限验证逻辑自动就会执行,但是在某些情况下,我们可能需要在代码里或者视图中通过手工方式 ...
 - asp.net core mvc权限控制:分配权限
		
前面的文章介绍了如何进行权限控制,即访问控制器或者方法的时候,要求当前用户必须具备特定的权限,但是如何在程序中进行权限的分配呢?下面就介绍下如何利用Microsoft.AspNetCore.Ident ...
 - Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 - Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 - Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 - Asp.Net Core 项目实战之权限管理系统(0) 无中生有
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 - Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 - Asp.Net Core 项目实战之权限管理系统(5) 用户登录
		
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
 
随机推荐
- Sencha Extjs4.2 皮肤制作
			
1 UI组件基础 学习ExtJs就是学习组件的使用.ExtJs4对框架进行了重构,其中最重要的就是形成了一个结构及层次分明的组件体系,由这些组件形成了Ext的控件. E ...
 - Sping--IOC概念
			
1. 新建项目, 引入spring包(sping, common-annotation, common-logging包), 还有junit包. user.java: package com.bjsx ...
 - Codeforces#362
			
A题 题意:给定一串数列,t,t+s,t+s+1,t+2s,t+2s+1......问某一个数是否是数列当中的 题意:只需判断(x-t)与(x-t-1)能否整除s即可,注意起始时的判断 #includ ...
 - EF LINQ根据某个字段去除重复行
			
1.ydc.GameScore.OrderByDescending(o => o.Score).GroupBy(ic => ic.UserPhone).Select(g => g.F ...
 - python基础(二)字符串內建函数详解
			
字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,''或""或''' '''中间包含的内容称之为字符串特性:1.只能存放一个值2.不可变,只能重新赋值3.按照从 ...
 - mongodb 导入数据库文件
			
吐槽一下: 这个导入现有数据文件弱爆了... 直接将要导入的数据文件放到mongodb下的db目录下就完事了...O(∩_∩)O哈哈~ 例如: 将shop_suning (shopdb_suning ...
 - Elasticsearch基础教程
			
Reference: http://blog.csdn.net/cnweike/article/details/33736429 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概 ...
 - Python科学计算之Pandas
			
Reference: http://mp.weixin.qq.com/s?src=3×tamp=1474979163&ver=1&signature=wnZn1UtW ...
 - 史上最全的css hack(ie6-9,firefox,chrome,opera,safari)
			
<!DOCTYPE html> <html> <head> <title>Css Hack</title> <style> #t ...
 - AutoLayout没有相对比例布局
			
怎么实现相对比例布局 比如我一个控件相对上边距的位置在整个屏幕的比例 可以用stack view来管理相对布局