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. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    原因: vs2010默认的是4.0框架,4.0的框架是独立的CLR,和2.0的不同,如果想运行4.0的网站,需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0 ...

  2. Ext分页实现(前台与后台)

    Ext分页实现(前台与后台)Spring+Mybatis 一.项目背景 关于Ext的分页网上有很多博客都有提到,但是作为Ext新手来说,并不能很容易的在自己的项目中得以应用.因为,大多数教程以及博客基 ...

  3. [转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

    原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的. ...

  4. django 缓存、中间件、信号、CSRF 详解

    中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...

  5. How to Disable Strict SQL Mode in MySQL 5.7

    If your app was written for older versions of MySQL and is not compatible with strict SQL mode in My ...

  6. [教程]phpwind9.0应用开发基础教程

    这篇文章着重于介绍在9.0中如何开发一个插件应用的示例,step by step来了解下在9.0中一个基础的应用包是如何开发的.1.目录结构OK,首先是目录结构,下面是一个应用我们推荐的目录. 应用包 ...

  7. css学习笔记(1)

    为什么要重新学css,理由有很多,css这个小婊砸,接触至今已有三年,但真的说熟练恐怕不见得.特此,为了我的目标,开始重新整理css的知识,我希望,每一篇笔记都能有个例子,从而来巩固我的知识. 在学习 ...

  8. python读取caffemodel文件

    caffemodel是二进制的protobuf文件,利用protobuf的python接口可以读取它,解析出需要的内容 不少算法都是用预训练模型在自己数据上微调,即加载"caffemodel ...

  9. ApacheCommons的Java公共类库(实现如Log这些功能)

    Apache Commons是Apache软件基金会的项目,曾隶属于Jakarta项目.Commons的目的是提供可重用的.开源的Java代码. 解释:http://baike.baidu.com/i ...

  10. QEMU/KVM虚拟机安装配置

    1.安装相关组件: [root@KVM ~]# yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v ...