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