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] Total Hamming Distance 全部汉明距离

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  2. [LeetCode] Same Tree 判断相同树

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  3. .NET WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作)

    好吧,还是那个社区APP,非管理系统,用户行为日志感觉不是很必要的,但是,错误日志咱还是得记录则个.总不能上线后报bug了让自己手足无措吧,虽然不管有木有错误日志报bug都是件很头疼的事... 我们知 ...

  4. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  5. Android----消息弹出框

    关于Android的知识,自从工作了就没有什么时间去总结学习过的知识,我个人比较喜欢学习后总结,今天就写一下关于android中消息弹出框的几种方式的简单示例,按照自己的思路写了一段,希望对和我一样在 ...

  6. 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法(转载)

    在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:t ...

  7. Wpf usercontrol dispose

    窗口关闭时组件"析构": public UserControl()        {            InitializeComponent();               ...

  8. 批量 ping 测试脚本

    是否会使用 vpn 工作,已经成为魔法师和麻瓜之间最重要的区分.使用 vpn 工作,也产生了其它一些奇奇怪怪的问题,比如,选择 vpn 服务器. 你要测试哪个 vpn 离你最近. 所以,就有了下面的脚 ...

  9. sql server中对xml进行操作

    一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...

  10. java 学习框架

    例如 Jsp.Velocity.Tiles.iText 和 POI.Spring MVC框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术.