后台系统:账号权限系统设计
文章对账号权限系统设计展开分析,希望能够给你带来些启发。
一、系统概述
一个账号权限管理系统,主要包括三个元素:账号、角色、权限。我们所要管理的,也就是账号、角色和权限之间的关系。
账号:基本上所有的应用,无论是移动端,PC端,C端或B端产品,登陆都需要一个账号。只是对于C端的产品,都是用户自己注册即可。而对于后台产品而言,是需要公司内部人员去创建账号的。
角色:所谓角色,就是用来控制各个账号的操作范围的,可以理解为权限组。因为一个系统中权限太多,我们不可能每创建一个账号,就去挨个设置一遍权限,因此可以根据不同的部门、职级、工作内容等来对权限进行分组,制定成不同的角色,这样,在创建账号时,就可以直接赋予账号不同的角色,从而把角色拥有的权限给到这个账号。
权限:包括数据权限、操作权限和页面权限。
一、数据权限:即账号可以看到的数据范围,比如一个旅游行业的公司管理者能看到公司的所有数据,而亚太部的人只能看到亚太部门产生的数据。在设计过程中,数据权限控制的难易程度与业务和公司部门设置的复杂程度有关。
二、页面权限&操作权限:页面权限即账号可以看到的页面内容,操作权限即用户可以进行操作的内容,如增删改等。在产品设计的过程中,可以将操作权限和页面权限结合起来做到一个集合中,创建角色时将权限赋予给角色即可。
系统的主要流程为:将权限设置成不同的集合,即角色,再将角色绑定到账号上,那么这个账号就拥有了这些角色的权限集合。一个账号可以绑定多个角色,一个角色又拥有多个权限。
如上图所示:用户A拥有了角色1和角色2两个角色,从而拥有了“增加、删除、审核”的权限。
二、实例设计
1、账号管理
添加/编辑账号:
在创建账号时,一般都需要填写基本信息和设置角色。基本信息主要包括姓名,部门,账号备注等等,不同企业需求不同。
此外,为了控制数据权限,还可能会有账号等级的选择、账号关联、上下级关系绑定等操作。具体流程视设计情况而定。
2、角色管理
添加/编辑角色:
需要说明的是,角色不能随意删除或禁用,需要判定该角色有没有被哪个账号绑定,若该角色正在被使用,则不允许删除并给出相应的提示。
三、经验之谈
1、事先可以对账号进行一个等级划分(根据实际业务制定划分规则),然后可以根据等级来判定数据权限。如等级为公司高级管理者,则可以看到所有的数据,而等级为分公司管理员,则根据分公司的ID或者名称去获取对应的数据等。不过这个只能做一个比较粗略的控制,仅一个等级来控制数据权限是远远不够的;
2、考虑是否需要提供账号与账号之间做数据关联的入口。当然,这是属于比较特殊的情况,当设计的控制数据权限的规则都不能满足的时候,是否需要为特例提供操作入口;
3、考虑是否需要提供一个账号和数据之间直接做绑定的入口?如:等级为分公司管理员,由于业务需求,需要看到另外一个分公司的某条数据,该如何实现。当然,这里只是举了一个很简单的例子,实际实现时会有很多更细节和深入的问题;
4、若大部分账号在权限上都存在差异,那是否每个账号都需要有一个设置详细权限的地方,而仅把角色当做一个快捷选择的方式。(若不是必需,最好不要采取该种方式,这样会破坏权限的规范性,不利于维护和管理);
5、创建角色(权限组)之前,需要明确各个部门之间的业务范围及权限(包括页面权限和操作权限),并将这些人就行划分;当然,随着公司的业务和后台系统功能的改变,各个角色的权限是需要不断完善和调整的;
6、在一些系统流程中,还需要为权限设置互斥关系,这样的话,拥有互斥权限的两个角色就不能同时绑定给同一个账号了。是否需要这一步操作,需要根据业务情况而定;
7、对于一些基础的账号,在创建账号时,是否需要直接根据账号等级绑定默认角色(即给以默认权限)。
暂时想到的就是这些,后面想到了会再继续补充。
小小产品一枚,文章纯属工作中个人经验总结,欢迎大神拍砖指教。
本文由 @姜荨 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自unsplash,基于CC0协议
指标体系
我们现在是先添加管理账户,然后给角色配置权限,并管理员账户指定相应的角色完成权限分配(问下大佬们:做后台注册时,用户名注册好还是手机号注册好,一般都啥注册逻辑)
注册,现在一般都是手机号了。用户名一般都是放在个人中心用户自己去维护。前期系统可以自动生成一个用户名。其实这个用户名现在已经不是非常重要了。