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. 版本管理工具svn简介

    svn简介 SVN是一种C/S架构的版本管理软件 , 能够帮助我们保存开发过程中各个文件的所有历史版本, 你因此可以方便的找回软件的任何一个历史状态., 日常开发中经常用到. 安装使用 1.  在 u ...

  2. staxon实现json和xml互转

    pom.xml: <dependency> <groupId>de.odysseus.staxon</groupId> <artifactId>stax ...

  3. 读《单页web应用》-回顾作用域

    js中没有块级作用域,只有全局作用域和函数作用域.全局变量可以在任何地方访问,局部变量只能在声明它的地方访问. var a=1; function func(){ var a=2; } console ...

  4. .net的一致性哈希实现

    最近在项目的微服务架构推进过程中,一个新的服务需要动态伸缩的弹性部署,所有容器化示例组成一个大的工作集群,以分布式处理的方式来完成一项工作,在集群中所有节点的任务分配过程中,由于集群工作节点需要动态增 ...

  5. CSS display:inline-block

    CSS display:inline-block 在css布局里,我们经常看到代码 「display:inline-block; *display:inline; zoom:1; 」,大多人会说上面的 ...

  6. 织梦DedeCMS

    DedeAMPZ服务器套件 http://dedeampz.dedecms.com/ DedeCMS  PHP开源网站管理系统  CMS系统 http://www.dedecms.com/produc ...

  7. 后进先出 stack、 先进先出Queue

    using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...

  8. Hibernate Hql 总结(2)---laoyang

    package com.etc.test; import java.util.Iterator; import java.util.List; import org.hibernate.Query; ...

  9. SQLite

      什么是SQLite SQLite是一款轻型的嵌入式数据库 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还快 ...

  10. Calendar类

    Calendar类 注意:根据日历规则,如果想要这个月减去5天,那么则为: add(Calendar.Day,-5) 成员方法: public int get(int field):返回给定日历段的值 ...