前言:
  RBAC是Role-Based Access Control的缩写, 它几乎成为权限系统的数据模型的选择标配.
  之前写个两篇关于权限系统的文章, 主要涉及如何在应用中实现权限控制, 对权限系统本身的数据模型未着水墨. 权限系统的设计到现在为止, 非常的成熟, 而且网上的资料大而全. 比如这篇博文: 权限系统与RBAC模型概述, 其基本就涵盖了各类RBAC的权限数据模型的设计, 可根据小/中/大的业务场景进行定制.
  本文结合自己的业务场景, 介绍一个小型的后台管理系统的权限系统(RBAC)的数据模型, 权做笔记, ^_^.

相关系列文章:
  1. springmvc简单集成shiro 
  2. 类Shiro权限校验框架的设计和实现

设计目标:
  最简化RBAC的数据模型, 同时为了给系统添加一定的灵活度, 即可以单独给用户赋予某个特定权限.
  这边把权限定义为:

permission(权限) = resource(资源) + action(动作)

  对于资源(resource), 不在细分为页面(page)级别, 甚至到按钮(menu)级别. 资源更像一个具体的业务/功能的标记.
  对于动作(action), 可以简单分为read/write/update/delete.
  这样权限(permission)就很容易定义和理解, 比如功能: 查看投诉, 其对应permission为: complaint:read.
  role和user都相对独立, 即role没有继承和层次关系, 用户不再引入组group.
  这样的话, 将大大减少权限的设计, 避免在中小型业务后端, 进行过度设计, 导致工作量膨胀且没明显增量收益.
  为了系统一定的灵活度, 在单独引入user到permission的直接映射表, 用于扩展.

数据模型:
  对了小型的后台管理系统, 用户不多, 表可以采用单库单表, 总之尽量简单, 这边的表都保留id字段(主键自增)作为约定.
  作为最基础的RBAC表设计:
  
  为了增加灵活性, 单独添加的用户到权限的双向映射表.
  
  事实上, 如果业务规模真的不大, 且权限的粒度较粗, 完全退化为了用户/权限表模型, 也是可以完全满足需求的, 而且实现更快.
  这边结合了两种, 算是一个小复合模式.

后记:
  RBAC的权限确实很成熟, 不过还是那句老话, 纸上得来终觉浅, 绝知此事要躬行.
  本文权做个人笔记了.

权限系统(RBAC)的数据模型设计的更多相关文章

  1. vue_cli下开发一个简单的模块权限系统之展现数据

    这个页面是用户列表:userList就是第二张截图中的data里面的userList vue中只要改变存放数据的载体就会实现页面改变,mounted的意思是页面加载时执行这里面的函数,我们需要在页面加 ...

  2. 转:RBAC如何设计一个权限系统

    前言 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题.目前在公司负责权限这块 ...

  3. phpcms中的RBAC权限系统

    PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...

  4. 权限系统与RBAC模型概述

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3793894.html ...

  5. 权限系统与RBAC模型概述[绝对经典]

    0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋.当时google了一些权限管理的资料,从中了解到早就有了RBA ...

  6. [转]权限系统与RBAC模型概述[绝对经典]

    转自:https://blog.csdn.net/yangwenxue_admin/article/details/73936803 0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的 ...

  7. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  8. TP支持菜单动态生成RBAC权限系统数据库结构设计方案

    最简单基于RBAC权限系统数据库结构设计 包括如下几个表 1. 用户表 -- Table "t_user" DDL CREATE TABLE `t_user` ( `id` int ...

  9. 权限系统的设计模式 ACL RBAC ABAC

    ACL(Access Control List):访问权限列表  如: user1-->AC1 user1-->AC2 user2-->AC1    此时权限汇总成一个列表 这种设计 ...

随机推荐

  1. docker安装openwrt镜像(不完美案例)

    镜像从http://downloads.openwrt.org/releases下载 注意选择generic-rootfs.tar.gz这种类型的镜像 使用docker import导入镜像,导入后可 ...

  2. Wireshark解析MQTT

    Mac下安装lua curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz tar zxf lua-5.2.3.tar.gz cd lua-5.2.3 m ...

  3. org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'null' to required type 'double' for property 'band'; nested exception is org.springframework.core.convert.Con

    本文为博主原创,未经允许不得转载: 先将异常粘贴出来: 20:37:26,909 ERROR [com.suning.fucdn.controller.ProductDataStaticsContro ...

  4. Go 接口(interface)

        文章转载地址:https://www.flysnow.org/2017/04/03/go-in-action-go-interface.html 1.什么是 interface? 简单的说,i ...

  5. zabbix-3.4.14源码安装

    此次介绍一下,zabbix的源码安装,因为zabbix的依赖很多,所以源码安装有很多依赖需要安装 首先,下载zabbix源码包 wget https://nchc.dl.sourceforge.net ...

  6. Redhat中关于httpd仓库安装的简要步骤

    创建repo-server: yum install httpd yum  install  httpd  -y       < -y 表示在安装过程中与界面交互时自动答复yes >sys ...

  7. .gitignore无效

    有个别文件不想跟踪,比如pycharm的配置文件. 但是这个文件已经被git跟踪的情况下,再加入.gitignore是无效的. 只需要: git rm --cached .idea/workspace ...

  8. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! --主机密钥验证失败

    1.错误出现在更换服务器操作系统后,使用ssh指令连接服务器时报错:ECDSA主机密钥发生改变,导致主机密钥验证失败! 2.解决方式一 使用指令:$ ssh-keygen -R  主机IP 如:$ s ...

  9. BOM&DOM

    BOM(浏览器对象模型) 1. location相关 . location.href 获取当前url . location.href="http://www.sogo.com" 跳 ...

  10. input date

    https://stackoverflow.com/questions/17954966/how-to-get-rid-of-x-and-up-down-arrow-elements-of-a-inp ...