本文对账户权限系统的设计进行了分析,希望能给大家带来一些启发。
一、系统概述
帐号权限管理系统主要包括三个要素:帐号、角色、权限。 我们要管理的是账户、角色和权限之间的关系。
账号:基本上所有的应用,无论是移动端、PC端、C端还是B端产品音效,都需要账号登录。只有C端产品,用户可以自行注册。 对于后端产品,需要公司内部人员创建账户。
角色:所谓角色就是用来控制每个账户的操作范围的,可以理解为权限组。 由于系统中的权限太多,我们不可能每次创建账户时都将权限一一设置。 因此,可以根据不同部门、职级、工作内容等对权限进行分组,制定不同的角色。 这样,在创建账户时,就可以直接为该账户分配不同的角色,从而赋予该账户该角色所拥有的权限。
权限:包括数据权限、操作权限和页面权限。
1、数据权限:即账户可以看到的数据范围。 例如,旅游行业的公司经理可以看到公司的所有数据,而亚太部门的人只能看到亚太部门产生的数据。 在设计过程中,数据权限控制的难易程度与业务及公司部门设置的复杂程度有关。
2、页面权限&操作权限:页面权限是指该账户可以看到的页面内容,操作权限是指用户可以操作的内容,如添加、删除、修改等。 在产品设计过程中,可以将操作权限和页面权限组合成一个集合,在创建角色时将权限分配给角色。
系统的主要流程是:将权限设置为不同的集合,即角色,然后将角色绑定到账户上,那么该账户就拥有这些角色的权限集合。 一个账号可以绑定多个角色,一个角色拥有多个权限。
如上图所示:用户A拥有角色1和角色2两个角色,因此拥有“增、删、审”权限。
2. 实例设计 1. 账户管理
添加/编辑帐户:
创建账户时,一般需要填写基本信息并设置角色。 基本信息主要包括姓名、部门、账户备注等,不同的公司有不同的需求。
另外,为了控制数据权限,还可能存在账户级别选择、账户关联、上下级关系绑定等操作。 具体流程根据设计情况而定。
2. 角色管理
添加/编辑角色:
需要注意的是用户角色权限设计,角色不能随意删除或禁用。 需要确定该角色是否绑定到哪个账户。 如果该角色正在使用,则不允许删除,并会有相应提示。
3. 谈经验
1、可以预先对账户进行级别划分(可以根据实际业务制定划分规则),然后根据级别确定数据权限。 如果您是公司高级管理人员,您可以看到所有数据,如果您是分公司管理员用户角色权限设计,您可以根据分公司的ID或名称获取相应的数据。 然而,这只能提供相对粗略的控制。 仅仅一层层控制数据权限是远远不够的;
2、考虑是否有必要提供账户间数据关联的入口。 当然,这是比较特殊的情况。 当无法满足设计的数据权限控制规则时,是否需要提供特殊情况的操作入口?
3、考虑是否有必要提供账户和数据直接绑定的入口? 例如,如果您是分支机构管理员,由于业务需要,需要查看另一个分支机构的某条数据,您该怎么做? 当然,这只是一个非常简单的例子,实际执行过程中还会有很多更细节、更深入的问题;
4、如果大部分账户的权限不同,是否每个账户都需要有一个地方来设置详细的权限,而角色只是作为一种快速选择的方式? (如果没有必要,最好不要采用这种方式,这样会破坏权限的规范性,不利于维护和管理);
5、创建角色(权限组)之前,需要明确各个部门之间的业务范围和权限(包括页面权限和操作权限),并对这些人员进行划分; 当然,随着公司业务和后台系统功能的变化,各个角色的权限需要不断完善和调整;
6、在某些系统进程中,还需要建立权限的互斥关系。 这种情况下,同一个账号不能同时绑定两个权限互斥的角色。 是否需要这一步取决于业务情况;
7、对于某些基础账户创作人,创建账户时,是否需要直接根据账户级别绑定默认角色(即赋予默认权限)?
暂时想到的就这么多,以后想到再补充。
这是一个小产品。 文章纯粹是个人工作经验的总结。 欢迎专家给我建议。