RBAC

现在大多数的管理系统都是基于RBAC开发的组织机构权限框架。所有的操作都是基于角色(Role)来完成的。我们先从需求的角度出发,来了解关于系统权限管理。

  1. 用户A和用户B都属于研发部,我们可以通过对研发部授权,从而让用户A和用户B同时具有某一种权限。[部门授权]
  2. 财务部有财务经理,财务经理拥有比普通职员更多的权限,需要在财务部下设计财务经理岗位,从而对该岗位进行授权。[岗位授权]
  3. 某个用户很特殊,但他没有对应的岗位,需要给他额外的授权,此时需要对该用户进行授权。[用户授权]

上面列举了比较典型的几类需求,现在考虑,我们应该怎么设计组织机构权限管理模块?

先来梳理以下需求。


  1. 对部门授权

    1.1 添加部门权限

    1.2 删除部门权限

  2. 对岗位授权

    2.1 添加岗位权限

    2.2 删除岗位权限

  3. 对用户授权

    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权限模型的更多相关文章

  1. RBAC权限模型——项目实战(转)

    一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...

  2. (转)RBAC权限模型——项目实战

    一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...

  3. RBAC权限模型及数据权限扩展的实践

    话说大家对RBAC权限模型应该是耳熟能详了.但真正用的好的并不多.并且原始的RBAC模型并不包括数据权限的管理,网上也差点儿没有相关的文章可以參考.本人经过几个项目的实战,在其基础上扩展出一套可行的. ...

  4. RBAC权限模型——项目实战

    RBAC权限模型——项目实战

  5. [七年技术总结系列][理论篇]-RBAC权限模型由浅入深

    权限部分将分两章介绍,第一章由浅入深介绍权限理论知识及应用,第二章介绍具体实现.后期再讲述中间件的使用时,还会插入一些权限内容,本质上属于中间件的应用. 权限模块是业务系统最常见.最基本的子集.本章假 ...

  6. JWT与RBAC权限模型

    JWT JWT是什么? Json web token (JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC7519),该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  7. RBAC 权限模型

    RBAC 0 模型 最基本的 MySQL 脚本,没有建立外键约束. /* Navicat Premium Data Transfer Source Server Type : MySQL Source ...

  8. 基于角色访问控制RBAC权限模型的动态资源访问权限管理实现

    RBAC权限模型(Role-Based Access Control) 前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管 ...

  9. 权限管理系统(四):RBAC权限模型分类介绍

    RBAC是Role-BasedAccess Control的英文缩写,意思是基于角色的访问控制.RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构 ...

随机推荐

  1. [LeetCode] Guess Number Higher or Lower 猜数字大小

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  2. [LeetCode] Product of Array Except Self 除本身之外的数组之积

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...

  3. ACM/ICPC2016 青岛区域赛

    A(hdu5982).(模拟) 题意:输入n对数,将每对数相乘并相加 分析:模拟 B(hdu5983).(模拟) 题意:给你一个二阶魔方,问能否通过一次旋转使得给定魔方的每个面颜色相同 分析:模拟 C ...

  4. java 上传图片

    1.导入smartupload.jar包 ,添加uploadIMG.jsp,upfileIMG.jsp. 2.需要在项目下面建立一个保存文件的文件夹pic或者upload 3.在调用的地方调用子框架u ...

  5. 用vue.js学习es6(一):基本工具及配置

    一.工具: sublime,node.js,npm 1.安装sublime 的es6插件: (1).在sublime中按Ctrl+`调出console (2).粘贴以下代码到底部命令行并回车(subl ...

  6. P2特征(一)

    很多人在提到项目的特征,肯定能说出来很多的内容,但是在英国体系下,项目的特点有哪些呢?这些特点引深的内容又有什么深度的含义.         项目具有临时性:很多人都知道项目是临时的,结束了就团队成员 ...

  7. java利用JDK调用并执行js源码

    前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...

  8. Resource leak: 'context' is never closed

    from: http://stackoverflow.com/questions/14184059/spring-applicationcontext-resource-leak-context-is ...

  9. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  10. The commands of Disk

    The commands of Disk fdisk( the disk size is less 2TB) fdisk - partition table manipulator for Linux ...