权限控制:分配权限1

在介绍分配方法之前,我们必须理解权限关系,这里面涉及到三个对象:用户,角色,权限,权限分配到角色,角色再分配到用户,当某个用户属于某个角色后,这个用户就具有了角色所包含的权限列表,比如现在有一个信息管理员角色,这个角色包含了信息删除权限,当张三这个用户具有信息管理员角色后,张三就具备了信息删除的权限。在某些特殊场景下,权限也可以直接分配到用户,也就是说可以直接把某些特定的权限,绕过角色,直接分配给用户。Microsoft.AspNetCore.Identity.EntityFrameworkCore框架中都提供了这样的支持。

先把框架中主要的业务对象类介绍一下:

IdentityUser:表示一个用户信息

IdentityRole:表示一个角色信息

IdentityRoleClaim<TKey>:表示角色具有的权限

IdentityUserClaim<TKey>:表示用户具有的权限

IdentityUserRole<TKey>:表示用户角色关系

基本概念理解后,下面我们就来看一下如何进行权限分配。

1,分配权限到角色:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了RoleManager类,类中提供了把权限分配到角色的方法:

  Task<IdentityResult> AddClaimAsync(TRole role, Claim claim)

  第一个参数表示对应的角色对象,第二个参数表示一个权限信息

2,分配权限到用户:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了UserManager类,类中提供了把权限分配到用户的方法:

  Task<IdentityResult> AddClaimAsync(TUser user, Claim claim)

  第一个参数表示对应的用户对象,第二个参数表示一个权限信息

3,分配用户到角色:用到的同样是UserManager类,使用的方法:

  AddToRoleAsync(TUser user, string role)

  第一个参数表示的是用户对象,第二个是角色的名称

4,获取角色当前具有的权限列表:

 Task<IList<Claim>> RoleManager.GetClaimsAsync(TRole role)

5,获取用户当前具有的权限列表:

 Task<IList<Claim>> UserManager.GetClaimsAsync(TUser user)

时间: 2024-09-29 16:13:36

权限控制:分配权限1的相关文章

软件开发的权限控制和权限验证

在开发软件时,我们经常会遇到账号体系,那么就不可避免地涉及到了权限控制或者叫权限管理. 很多人容易把权限控制和权限验证搞混淆,以为在前端隐藏了某个按钮就控制好权限了,其实用户可以直接发送一个接口请求服务端来完成这个操作. 权限控制是指在一个系统中存在多个用户角色,不同的角色拥有不同的系统资源访问权限,它的实现更直观地体现在客户端的用户界面中. 例如,针对VIP用户,很多功能都是可以用的,但是在普通用户的客户端界面上,同样的按钮有时是置灰的或者隐藏的. 权限验证是指系统服务器针对客户端发送过来的请

通用权限管理平台权限控制--按钮权限

通用权限管理系统的重点在于如何更好的控制按钮操作权限,在下结合自己的平台经验,在使用MVC的环境下,使用自定义MVC控件,并且结合系统的权限控制于一体,减少业务在权限方面的控制,使对按钮权限的控制更加简洁. 通用权限控制系统的权限用户控件实现以后,在实际使用中如下所示: @Html.Eap().Button().Id("btnAdd").Name("添加").Class("easyui-linkbutton").IconClass("i

yii2.0权限控制 ACF权限--登录验证

ACF是一种通过yii\filters\AccessControl类来实现的简单授权 一般在控制器中我们调用如下:打开backend\controller\SiteController.php 我们看到这样一段代码 public function behaviors(){return ['access' => ['class' => AccessControl::className(),'rules' => [['actions' => ['login', 'error'],'al

基于Vue实现后台系统权限控制

原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通前端项目除了数据交互更频繁以外,还有一个特别的需求就是对用户的权限控制,那么如何在一个Vue应用中实现权限控制呢?下面是我的一点经验. 权限控制是什么 在权限的世界里服务端提供的一切都是资源,资源可以由请求方法+请求地址来描述,权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配

Java访问权限控制

访问权限控制   java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访问权限控制的等级,从最大权限到最小权限依次是:public.protected.包访问权限(没有关键字).private. 包:库单元 包内有一组类,它们在单一名字空间之下被组织在了一起.如果你向导入某个标准库中的类的话,可以使用import关键字.我们之所以要导入,就是要提供一个管理名字空间的机制.所有类成员的名称都是彼此分离的.所以具有相同方法的不同类在程序运行时不会出现错误的.

Sql Server来龙去脉系列 必须知道的权限控制基础篇

题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内容之前,这里有几个问题: 1.一般程序猿都知道怎样创建.修改.登录账号,但知不知道登陆账号存储在哪个表或者视图? 2.数据库中其实存在登录账号和用户两个概念,你能解释清楚这两个概念吗? 3.对于一个登录账号,我们可以为他设置哪些权限? 4.你清不清楚数据库信息存储在哪些表或试图? 5.我们可以给登录

Linux学习总结(14)——Linux权限控制

linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经把自己的隐私保护的很好,漏洞总是有的,侧面的攻击往往是难以防守的.所以大家跟我一起学习一下基础的权限控制,在后面也会有更多关于权限控制的知识点分享出来.谢谢各位的关注和支持! 开班第九天: 今天的课程大纲: linux系统中文件目录的基本权限控制 如何来修改默认的生成权限 三种特殊的权限(s,s,t

Java之路(五) 访问权限控制

在Java中,所有事物都具有某种形式的访问权限控制. 访问权限的控制等级从最大到最小依次为:public,protected,包访问权限(无关键词)和private. public,protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员(域或者方法)定义之前的. 一.类成员的访问权限 取得对某成员的访问权的唯一途径是: 1).使该成员成为public.无论谁在哪里,都可以访问该成员: 2).通过不加访问权限的修饰词并将其他类放置于同一包内的方式给成员赋予包访问

Java编程思想(六、访问权限控制)

访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关.便于未来重构代码,而不必对业务层做过多的改变.因此,Java提供了访问控制修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private. 1.包:类库单元.包内含有一组类,它们在单一的名字空间之下被组织在了一起.比如,在Java的标准发布中有一个工具库.它被组织在java.util名字空间之下.ja

Vue 实现前端权限控制

为什么做前端权限控制 前端权限控制并不是新生事物,早在后端 MVC 时代,web 系统中就已经普遍存在对按钮和菜单的显示 / 隐藏控制,只不过当时它们是由后端程序员在 jsp 或者 php 模板中实现的. 随着前后端分离架构的流行,前后端以接口为界实现开发解耦,权限控制也一分为二,前端权限控制的所有权才真正回到了前端. 可能有的同学会想,前后端分别做一套控制,是不是将事情复杂化了,而且从根本上讲前端没有秘密,后端才是权限的关键,那是不是只在后端做控制就可以了. 对于这个问题我们首先应该明确,前后