权限系统设计
一个系统的核心,其中就包含权限数据管理。
这一部分的设计最为复杂也是系统设计的最基础的部分。
有幸我能设计这部分。
下面图能说清楚权限包含哪些概念。
- 权限(Permission):职能权利范围。(通俗说哪些事能干,哪些事不能干)
- 操作权限:一般体现在通过界面登录,登录进来到控制台,更直观的权限控制。
- 菜单权限:用户登录后,通过菜单显示控制这个用户的权限,正常的中型系统都具备这种功能。
- 按钮权限:这个细粒度就比较低,一般在菜单权限控制层下面,也就是说这个用户登录到界面后,通过对增、删、改、查导出等一些按钮进行控制。
- 数据权限:通过数据层来控制权限,比如:我们做一个产品,A公司在用,B公司也在用,那么我们通过系统设计时候进行标识出A公司还是B公司,虽然用的功能都一样,在后台直接通过数据进行了区分。
一. 权限模型
市面上这种权限模型文章非常多,我简单的总结一下。
各有所长,各有所短。
一个好的模型并不是说越强大越好,一个好的女朋友并不是超级漂亮就一定好,当然也不能找个看一眼就想吐的,而是能包容你,有一个美丽的灵魂,温柔,善解人意…
跑题了,总结一句话,够用、用起来舒服为王道。
1. 权限模型分类
英文简称 | 中文名称 | 英文全称 |
---|---|---|
ACL | 访问控制列表 | Access Control List |
DAC | 任意访问控制 | Discretionary Access Control |
MAC | 强制访问控制 | Mandatory Access Control |
RBAC | 基于角色的权限控制 | Role Based Access Control |
ABAC | 基于属性的权限控制 | Attribute Based Access Control |
PBAC | 基于策略的权限控制 | Policy Based Access Control |
2. 权限模型说明
ACL
RBAC
ABAC
这个模型根据特殊的规则来分配权限, 这些规则组合了用户(users), 资源(resource)和对象(objects)的属性
PBAC
用户(组)隶属于 角色,角色 隶属于 资源(项目)
3. 权限模型比较
如果说针对微商,小程序这种小服务,没有强烈需求下,ACL 这种就够用了,没必要设计的那么繁琐。
RBAC 比较常用的一种权限模型,基本上所有权限控制都能满足,唯一缺点,只要你用户需要哪怕一个权限,那你就需要一个角色,划分的比较细。
二. 数据库设计工具的使用
之前都用powerdsigner,现在自从用Mac电脑了,好多软件都改成mac习惯了,我用的是MySQL Workbentch,感觉还可以。
包括对表的一些定义设置,都很方便。