RBAC权限模型
RBAC
现在大多数的管理系统都是基于RBAC开发的组织机构权限框架。所有的操作都是基于角色(Role)来完成的。我们先从需求的角度出发,来了解关于系统权限管理。
- 用户A和用户B都属于研发部,我们可以通过对研发部授权,从而让用户A和用户B同时具有某一种权限。[部门授权]
- 财务部有财务经理,财务经理拥有比普通职员更多的权限,需要在财务部下设计财务经理岗位,从而对该岗位进行授权。[岗位授权]
- 某个用户很特殊,但他没有对应的岗位,需要给他额外的授权,此时需要对该用户进行授权。[用户授权]
上面列举了比较典型的几类需求,现在考虑,我们应该怎么设计组织机构权限管理模块?
先来梳理以下需求。
对部门授权
1.1 添加部门权限
1.2 删除部门权限对岗位授权
2.1 添加岗位权限
2.2 删除岗位权限对用户授权
3.1 添加用户权限
3.2 删除用户权限
---
实现:
权限表,权限表保存了部门、岗位、用户的权限。
权限表字段如下:ID,权限类型,权限资源,组织机构资源ID
添加权限
如果给部门添加了权限,则将在权限表中插入一条数据,ID,部门,某个JSP文件/按钮等,部门ID
给岗位和用户类似
删除权限
将权限记录根据组织机构资源ID中删除
查询用户权限
- 根据用户ID查询权限表,如果找到该用户ID和资源ID,则拥有权限
- 查询到该用户对应的岗位ID,根据岗位ID和资源ID,查找权限表
- 查询该用户所属部门,根据部门ID和资源ID,查找权限表
接下来,来看看基于RBAC的权限实现
RBAC所有的权限都与角色关联,所以,我们只需要管理角色就好。
权限表:ID,权限资源,角色ID
角色表:ID, 角色名称
添加权限
找到对应的角色,查找到系统中资源,对该资源进行设置权限,并添加到权限表中
删除权限
找到对应的角色,删除该角色的某个权限
查询权限
- 先找到某个用户所属的角色
- 将角色拥有的权限取并集
- 检查用户是否拥有该权限
RBAC简化了权限的管理。我们只管理角色的权限就好,而不需要关注部门、岗位、用户的权限。
RBAC权限模型的更多相关文章
- RBAC权限模型——项目实战(转)
一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...
- (转)RBAC权限模型——项目实战
一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...
- RBAC权限模型及数据权限扩展的实践
话说大家对RBAC权限模型应该是耳熟能详了.但真正用的好的并不多.并且原始的RBAC模型并不包括数据权限的管理,网上也差点儿没有相关的文章可以參考.本人经过几个项目的实战,在其基础上扩展出一套可行的. ...
- RBAC权限模型——项目实战
RBAC权限模型——项目实战
- [七年技术总结系列][理论篇]-RBAC权限模型由浅入深
权限部分将分两章介绍,第一章由浅入深介绍权限理论知识及应用,第二章介绍具体实现.后期再讲述中间件的使用时,还会插入一些权限内容,本质上属于中间件的应用. 权限模块是业务系统最常见.最基本的子集.本章假 ...
- JWT与RBAC权限模型
JWT JWT是什么? Json web token (JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC7519),该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- RBAC 权限模型
RBAC 0 模型 最基本的 MySQL 脚本,没有建立外键约束. /* Navicat Premium Data Transfer Source Server Type : MySQL Source ...
- 基于角色访问控制RBAC权限模型的动态资源访问权限管理实现
RBAC权限模型(Role-Based Access Control) 前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管 ...
- 权限管理系统(四):RBAC权限模型分类介绍
RBAC是Role-BasedAccess Control的英文缩写,意思是基于角色的访问控制.RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构 ...
随机推荐
- [LeetCode] Generate Parentheses 生成括号
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- .Net4.0以上使用System.Data.Sqlite
最近对Sqlite感兴趣,就尝试了一下用c#连接,我用的版本是vs2013,默认开发环境是.net4.5,,按照网上的教材,下载了System.Data.Sqlite,然后写了下面这个简单的测试代码, ...
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- html你可能还不知道的一些知识点
一.标签语义化 html标签语义化是让大家直观的认识标签和属性的用途和作用,好处最主要的是对搜索引擎友好. Eg: 1.如果你想在页面中突出"奥巴马"这三个字,让搜索引擎重视它,如 ...
- C# mysql 获取所有表名
public static List<string> GetAllTableName() { List<string> retNameLis ...
- BZOJ 1876: [SDOI2009]SuperGCD
1876: [SDOI2009]SuperGCD Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3060 Solved: 1036[Submit][St ...
- javaweb 基于java Servlet登入 简单入门案例
项目流程 第一步:创建一个java webproject第二步:创建三个界面,1,login.jsp 2 success.jsp 3 fail.jsp第三步:更改新建界面编码格式,utf-8 默然编码 ...
- MySQL的InnoDB索引原理详解
摘要 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本篇 ...
- 每天一个 Linux 命令(21):find命令之xargs
在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...
- Linux指令
文件指令 ls: ls -a :把隐藏的文件显示 ls -l 显示文件的详细信息 -lh 也是显示文件的详细信息,只是文件的大小是以k单位 ls -ld 显示指定目录下的信息 mkdir: mkd ...