搭建后台系统权限系统的经验总结
关于讨论后台系统中的权限系统的文章与理论有很多,而笔者就结合自己的认知与项目经验,与大家分享搭建权限系统的要点。
作为后台产品经理,相信大家都有接触过权限系统,权限系统是后台系统中不可缺少的部分,可以保证系统分工明确,不同部门、不同岗位的人员可以合理的使用系统,减少因权限导致的指责划分不明确等问题。
今年6月份新入职了一家新公司,主要负责中台项目,对公司的后台系统进行重构规划。
重构的第一步需要搭建好一个好的权限系统,发现公司的系统并没有针对权限去做设计,每个用户在每个页面的功能也没有去做区分,需要单独为每个账号去配置权限,这样存在的问题是:
- 同部门的相同岗位人员具有相同的权限,后台操作人员需重复配置多次权限。
- 若使用者身份变更,需要重新梳理进行赋权。新增功能后,需要为每个账号再进行配置。
针对对公司权限系统存在的问题,进行重新规划,新的权限系统功能模块分为组织架构管理、页面菜单设置、角色权限管理、账号管理四个模块。针对这四个主要模块,展开详细的说明。
一、组织架构
组织架构管理是对整个集团公司的员工所属组织进行维护、更新的管理。可根据公司的实际情况,选择组织架构的层级,组织架构设计的要点如下:
1. 新增部门
点击“添加”按钮,需先选择上级部门,部门级别为:集团–>分公司–>一级部门–>二级部门,根据公司规模大小及发展需要,可相应调整,上级级别选择好后,则自动带出下级的分类,如上级部门选择为分公司,则下级为一级部门。
点击提交时,需校验同级别部门下,不允许存在相同的部门名称。在列表处,二级部门只允许创建同级别部门,其余分类可创建同级别或下级部门。
2. 停用/启用部门
当部门状态为启用时,可以进行停用操作,当部门状态为停用时,可以进行启用操作,若停用上级部门时,下级部门需同步都停用,但开启上级部门时,下级部门的状态不变。
3. 删除
删除部门时,需校验该部门下是否存在员工信息,存在则不允许删除,且删除上级级部门时,下级部门需同步一起删除。
下图为组织架构管理模块的原型:
二、页面菜单配置
页面菜单权限的配置,也就是说会将系统中各个页面、包括菜单、页面、功能操作按钮等都配置好路由地址,配置完成归根结底,权限是建立在菜单得基础之上的,配置好页面菜单就可以生成整个系统的权限树,可以直接为权限去赋权了。
说明:菜单级别可根据公司系统的量级进行调整,不过一般不会超过三级菜单。
菜单类型可分为菜单目录和按钮,菜单目录也就是菜单栏及点击菜单所链接到的页面,而按钮一般承载在菜单目录之下。
下图为页面菜单配置模块的原型:
三、角色权限管理
角色权限就是操作权限与数据权限的权限合集,功能权限顾名思义,是用户可以操作系统中的哪些具体的功能点或者是页面中所有的功能点,通过对角色权限的修改,可以实现对用户权限的批量修改。
举例来说:同部门中,比如我们公司活动运营有10人,这10人拥有的权限是相同的,这种情况只需要创建一个活动运营的角色,再将活动运营的10名人员赋予此角色就可以了,简单方便。
而且,若系统增加权限时,也不需要单独去为这10名人员去配置,只需要将角色的权限进行修改就可以了。
而数据权限指的是可以看到系统哪部分的数据,设置是字段的限制等等,数据角色的权限划分一般会从区域、分公司、部门等维度来限制。
而数据权限指的是赋权的角色可以看到系统的哪部分数据,数据角色的划分一般可以选择从区域、分公司、部门等维度来限制。
目前我做的权限系统中并没有针对每个页面功能都做数据权限的处理,只针对某些特殊功能,如订单信息、销量信息等敏感信息去处理,采用的方式是各分公司可以查看各分公司的数据,总部可查看所有分公司的数据,具体数据权限的设置,可以结合各公司的要求进行更精准的设计。
下图为角色权限管理模块的原型:
四、账号管理
系统需由开发人员在数据库初始化一个管理员角色,这个账号不可删除,但可以修改。可使用此管理员账号去创建组织架构、页面菜单配置、角色付款及账号创建等增删改查功能。
为用户创建账号时,需填写好登录用户账号名及密码,选择用户角色,创建完成后,用户即可使用此账号登录系统平台,即可操作和使用所用于的功能权限及数据权限。
下图为账号管理模块的原型:
五、如何统计权限及账号
日常工作中免不了要为公司员工配置账户及权限,许多公司都是直接由负责开通账号的人员开通账号,可能就是口头一句话就开通账号了,但并没有统一的去管理,人员离职或变动也没有去及时更新。
其实一个好的权限系统,搭建好之后,也需要花费时间去管理,才能发挥它的作用。
在我的工作中,一般会使用如下表格去统计人员的权限及哪些人员已开通账号,方便统计。拿出表格一看,一目了然。
好的权限系统,并不是越复杂越好,需要结合公司的实际情况,进行合理的设计。以上是我对权限系统的一些思考总结,欢迎各位和我一起交流讨论。
本人有3年多的产品经理的工作经验,有互联网金融及电商行业工作经验,目前从事偏向后台产品经理工作,会持续输出对于后台产品的一些想法和见解,希望可以对大家有帮助。在后台产品的设计上还有很多地方需要学习的,也希望可以结实更多兴趣相同的人一起共同学习。
本文由 @搞笑君同学 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
茅塞顿开
菜单配置时,按钮应该怎么添加呢?
请问停用部门的话,那部门下的人员如何处理呢?
点击停用的时候如果还有账户挂在该部门下,进行提示:该部门正在使用中,暂时无法停用;点击停用的时候如果查到没有相关用户挂在该部门下,直接停用
「页面菜单配置」的目的是自动生成权限项减少开发成本吗?
首先给角色配置权限要有一个权限(功能)可选项的集合,[页面菜单配置]实际上就是配置的这个集合,如果应用层没有这个配置功能,等于每增加一个功能和按钮都需要开发在数据库手工增加,效率非常低,到时候开发不用干活光配这个了。
有一些权限系统依赖公司整体账户及部门体系,只对业务系统做权限管理,此时,只需要设置角色管理、系统菜单、以及给用户添加角色几方面即可。
部门管理是属于OA系统的哈,权限系统只是引用了账号的默认组织结构而已,如果想给A部门的组员,让他能看到B部门的所有数据,咋整,是不是。这就用到数据权限中的自定义组织范围了
组织架构权限可以归类到菜单类权限;权限一般分到菜单级权限和字段级权限就够啦,最主要的是把角色抽象出来
将功能和数据抽象,允许跟权限组和账号做映射。