龙凤网站建设云聚达,长沙网站建设电话,企业网站建设哪里做网站好,利用ps怎么做网站首页RBAC 权限管理设计 前言权限分类功能权限设计什么是 RBACRBAC 组成RBAC 模型分类基本模型RBAC0角色分层模型RBAC1角色限制模型RBAC2统一模型RBAC3 RBAC0 权限设计用户管理角色管理权限管理关联表 总结 前言
作为一个后台管理系统#xff0c;权限管理是一个绕不开的话题#… RBAC 权限管理设计 前言权限分类功能权限设计什么是 RBACRBAC 组成RBAC 模型分类基本模型RBAC0角色分层模型RBAC1角色限制模型RBAC2统一模型RBAC3 RBAC0 权限设计用户管理角色管理权限管理关联表 总结 前言
作为一个后台管理系统权限管理是一个绕不开的话题一个成熟的后端系统离不开一个比较完善的权限管理系统所以本小结我们根据 RBAC 思想来设计一下我们这个系统的权限管理。
权限分类
一般来说我们常说的权限分为两种一种是功能权限一种则是数据权限。
功能权限指的是用户登录系统后能看到什么模块能看到哪些页面。数据权限指的是用户在某个模块里面能够看到哪些数据。 本系统目前只进行功能权限的设计数据权限默认进行管控先最小化功能实现后面有需求在迭代吧。 功能权限设计
目前业界有很多关于权限系统的技术模型常见的有ACL、ABAC、DAC、RBAC等等不同体量的权限系统我们可以参考不同的权限模型进行梳理和设计本系统就采用一个经典的 RBAC 权限系统模型我接触的系统基本上都是使用的 RBAC 模型能满足绝大部分的需求。
什么是 RBAC
RBAC 模型Role-Based Access Control基于角色的访问控制模型是比较早期提出的权限实现模型在多用户计算机时期该思想即被提出其中以美国George Mason大学信息安全技术实验室LIST提出的RBAC96模型最具有代表并得到了普遍的公认。
RBAC 认为权限授权的过程可以抽象地概括为Who 是否可以对What进行How的访问操作并对这个逻辑表达式进行判断是否为True的求解过程也即是将权限问题转换为Who、What、How的问题Who、What、How构成了访问权限三元组具体的理论可以参考RBAC96。
RBAC的权限授权其实就是Who、What、How的问题。
Who权限的拥用者What权限针对的资源How具体的权限
RBAC 组成
RBAC模型的三要素为用户、角色、权限。
用户是发起操作的主体例如后台管理系统的用户、OA系统的内部员工、面向C端的用户。角色用于连接了用户和权限的桥梁每个角色可以关联多个权限同时一个用户也可以关联多个角色那么这个用户就有了多个角色的多个权限。权限用户可以访问的资源包括页面权限、操作权限、数据权限。
RBAC 模型分类 本系统使用 RBAC0 作为权限设计的方案够用以及容易学习。 在RBAC中根据权限设计的复杂程度可分为RBAC0、RBAC1、RBAC2、RBAC3我们就重点了解一下我们需要使用到的 RBAC0 模型就行另外几种有兴趣可以百度一下。
基本模型RBAC0
RBAC0是基础很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中我们把权限赋予角色再把角色赋予用户。用户和角色角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。 角色分层模型RBAC1
RBAC1建立在RBAC0基础之上在角色中引入了继承的概念。简单理解就是给角色可以分成几个等级每个等级权限不同从而实现更细粒度的权限管理。
角色限制模型RBAC2
RBAC2同样建立在RBAC0基础之上仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。
统一模型RBAC3
RBAC3是RBAC1和RBAC2的合集所以RBAC3既有角色分层也包括可以增加各种限制。
RBAC0 权限设计
通过上述分析我们可以发现设计功能权限离不开最基本的三要素用户管理、角色管理以及权限管理根据业务的不同可能还会涉及更复杂的三要素部门管理、职位管理、菜单管理等当然我们使用 RBAC0 只涉及到用简单的3要素。 用户管理 为了便于大家理解我们先参考一个优秀的开源框架 EL-ADMIN给大家截点图理解理解。 可以很清楚的看到页面上的功能我们的页面完成之后应该都是差不多的并且还有一个部门管理我们也可以有部门管理但是不加入权限继承。
用户表设计
字段类型含义idbigint主键IDusernamevarchar用户名mobilechar手机号avatarvarchar头像emailvarchar邮箱passwordvarchar密码statusint状态 1正常 2锁定is_deletedatetime是否删除last_login_timedatetime最后登录时间create_timedatetime创建时间create_uservarchar创建用户update_timedatetime更新时间update_uservarchar更新用户
角色管理 上面说了我们的系统暂时是没有数据权限的实现的。
角色表设计
字段类型含义idbigint主键IDnamevarchar角色名称remarkvarchar备注statusint状态 1正常 2锁定is_deletedatetime是否删除create_timedatetime创建时间create_uservarchar创建用户update_timedatetime更新时间update_uservarchar更新用户
权限管理 权限表设计
字段类型含义idbigint主键IDpidbigint父菜单ID一级菜单为0namevarchar菜单名称urlvarchar菜单URLpermsvarchar授权(多个用逗号分隔如user:list,user:create)typeint类型 0目录 1菜单 2按钮iconvarchar菜单图标orderint排序statusint状态is_deletedatetime是否删除create_timedatetime创建时间create_uservarchar创建用户update_timedatetime更新时间update_uservarchar更新用户
关联表
还有两张关联表需要设计这两张表非常的简单只有两个字段分别是两个关联表的id并且这两个字段都需要设置外键。
用户角色关联表
字段类型含义user_idbigint用户ID需要设置外键role_idbigint角色ID需要设置外键
角色权限关联表
字段类型含义role_idbigint角色ID需要设置外键menu_idbigint权限ID需要设置外键
ok关于表的设计到这里就结束了先简单的定了一个基础版本后续根据开发需求慢慢的在维护修改吧。
总结
关于权限设计这一块我们采用了 RBAC0 模型来实现基本上中小型企业都是够用的了。而且简单易上手学习难度不大非常适合我们学习下一小节我们使用 Spring Security 来编写具体的代码实现登录和授权功能。