如何搭建用户权限体系,你要懂这些

如一个用户涉及A、B、C三项业务,那么我是应该定义一个角色完成A、B、C三项业务的范围还是应该定义两个角色分别完成A、B业务和C业务呢?甚至定义三个角色分别完成A业务、B业务和C业务呢?

这时有人可能会说取决于ABC三项业务的关联性,实际上这个问题与业务的关联性没有关系。因为如果是相关联的业务那么必然会一起授权不可分割,如果是不相关的业务但是所有用户都是一起使用,那么也应该一起授权。

那么我们怎么判断呢?其实上面的例子和问题是走入了一个本末倒置的误区,从业务来归类用户了,方向上反了。前面我们说过,角色是拥有相似权限的用户抽象。

所以梳理角色的时候分析用户本身就可以了,归类出每类有相似权限的用户然后抽象成一个个角色。用户权限体系对于整个功能体系具有蝴蝶效应,一点点小的差异/差错到了最上层的功能和使用层面会放大很多倍。而且一旦需要修改会很麻烦,所以我们需要特别小心。
四、前端展现方式
如果一个用户有多个角色,那么在前端功能层面我们该如何处理呢?有两种方案:

角色切换:当一个用户有多个角色时,前端仅展现当前角色的相关功能,用户需要切换角色去使用对应的功能。
统一展现:当一个用户有多个角色时,前端展现该用户所有角色的功能的全集,用户不再需要切换角色。
那么我们在这两种方案之间,该如何选择呢?我们需要判断用户所拥有角色之间的关系。

一般来说,如果角色之间存在运行时互斥的情况,那么需要选择角色切换方案,如前面提到的家长和老师,一个用户不可能在同一时间既是家长角色又是老师角色,所以需要切换角色去使用对应的功能。

再比如求职者和招聘者,一个用户不可能同时使用求职者和招聘者的功能。除此以外,其他情况都可以选择统一展现方案。

这里需要我们注意一点,如果你的系统有很多功能,一个用户的运行时互斥角色只涉及到部分功能模块,那么角色切换可以只局限于局部,不必全局都进行角色切换。

五、建议

  1. 依据现实情况建立
    依据现实情况已经抽象形成的角色,最能贴合现实情况,能最大限度地满足现实需要。除此以外,使用现实情况中的角色定义符合普遍认知,避免“语言障碍”。

  2. 最大化满足个性化需要
    需要进行权限管理的系统,所涉及的业务特点、人员管理差异常常比较大,情况复杂,尽可能满足个性化配置可以兼容各种现实情况。

你可能感兴趣的:(权限体系,用户与角色的权限管理,用户运营)