公司最近在做一个项目,具体我就不说了,业务做完了之后,主管说后台现在业务流程可以跑得通了,但是接下来要做权限管理,不然这个系统还是没法用,不可能每个人在后台都可以随意操作和更改数据吧,我也就开始着手做后台的权限系统。
说实话第一次接触权限系统,相信很多PM跟我一样上网搜索各种资料,但很多都是理论上的知识,看上去也都能理解,但就是做起来的还是毫无头绪,我在研究了网上大量的权限设置相关的知识后,总结了一下:
1.权限设置现在普遍采用用户-角色-权限三者结合的方式,也成RBAC模型,是目前主流的权限配置模型,我说了是主流,也并不代表所有,但是相当多的电商平台,销售crm和SaaS平台也是这么做的,我结合了一下公司的业务,发现确实也是适合的,就采用这样的方式,将权限和角色绑定(多对多),然后在跟用户匹配(多对一),这点不难理解,比如产品经理这个角色,权限可以有很多,比如用户管理,活动管理和数据管理等权限;那一个用户在一家公司可能身兼多职,不仅担任产品经理的岗位,还可能是一个项目经理,客户经理或者是销售经理,这样的人物在公司也都很常见;
2.权限设置也分为操作权限和数据权限,一个是对后台数据可以进行增删改查,另外一个是是否有权限查看某些数据,这两个权限一定是分开设置的,可能有的文章会提到还会要页面权限,但是我在实际操作中将【页面权限】和【操作权限】放在一起设置,即我勾选某个操作权限的时候,对应的我也就享有这个页面权限。数据权限则指的是我在这个页面里具体能看到哪些数据,是全部数据,本人数据,本人及下属的数据,部门数据,还是部门及及子部门数据(总共就这五种)?屡清楚权限的范围其实是最难的,作者当时想了很久。
3.部门和用户最好是放在一起设置,如果说只是配置操作权限的话,完全是可以抛弃部门的,可以作为一个不重要的选填项放在用户信息列表中,但是前面在讲数据权限的时候也提到了,查看数据的范围不仅取决于用户的岗位,还跟部门有联系,不然你这么设置查看本部门的数据?怎么设置查看部门及子部门的数据?比如一个销售经理,他肯定要能看到自己团队所有人的销售数据,一个区域经理,肯定要能看到管辖区域内各地方的数据对吧。我的建议是在创建部门的时候就去添加用户。
接下来我就是放原型图的时候了,我知道这肯定是你们最想看的,做权限管理,我只做了三张表
首先是角色表,角色表是为了绑定权限的,大家可以看到我的角色表是分为两个部分的,左边这部分是创建角色,角色列表,右边这个权限列表,我是采用表格的展现形式,你当然也可以用像window是
那样的文件夹的形式,只是我觉得这样的形式很直观。超级管理员不用说了,肯定拥有最高的权限,而且不可更改和设置,其他的角色你都可以添加修改和删除。我的权限列表显示的都是【前台功能】,所谓前台功能呢,就是对数据的操作,没有做【后台功能】呢,是因为我们公司的业务规模小,一个超级管理员就够用了,我不用将安全设置啊,流程设置啊,审批设置啊还有系统设置啊放权下去,所以这里只展示了业务层面上的操作权限。
其次是职能表,重要的话说三遍,职能表就是用来设置数据权限的!职能表就是用来设置数据权限的!职能表就是用来设置数据权限的!
可以看到这张表跟角色表很相似,左边是职能表,类似于角色,右边就是数据权限的配置,选中某一个职能,然后可以给他配置数据权限,要注意,操作权限的配置是多选的,数据权限的配置是单选的!还有就是,角色表的名称和职能表的名称起的一样也可以,没有关系的,但是区分开他们分别绑定的是操作权限和数据权限就好了,别迷了。
最后,再来说一下部门/用户表,这个表的作用不用说大家也知道是做什么的了,没错就是要把角色和职能绑定到用户身上,实现权限设置的闭环。
可以看出来这个表也是分为两个部分,左边这个部门是部门的增删改查,右边这个是用户的增删改查,配置权限。选中某个部门,就可以查看到某个部门下的所有用户,很清晰也很直观,全公司默认是一级部门,不可删除和更改,之后就可以往下添加子部门,这样的扩展性不言而喻,很多公司都是把部门给写死了,这样会导致后期的扩展性很差,万一出现部门合并,取消某个部门了怎么办,还有合并部门要注意数据的转移!新增用户需要填写的信息必填项都已标注,选择部门和直属上级当然是为了绑定数据权限(查看下级数据和查看部门数据)。
新增用户后,就可以开始配置角色和职能了,大家可以清楚地看到,角色和职能完全是分开的,分别选中某项权限添加给用户,互相独立,虽然看似简单的页面,但是作者在一开始硬是想不来的,毫无头绪,这样匹配角色和职能直观清晰,扩展性好,互相不影响。
这就是简单的权限配置,但是作者在做的时候发现一个问题,那就是数据转移的问题,考虑到即使在一个公司,员工也有可能转岗,离职,离职的话数据不会删除,只是将用户的【在职】状态变成【离职】状态就好了,但是如果一个用户转岗了,比如从销售岗转到客服岗,那么他之前的操作数据又该存放在哪里?如果部门合并了或者是解散了,部门数据归哪里?如果有哪位大神懂得话,麻烦指点一下,作者的小公司里的没有产品大牛,完全靠自己摸索,请大神们不吝赐教。
想要具体的原型图,可以留言哦,我还没有画完……
网友评论