用户管理是每个产品必备的管理后台,最基础的用户管理只要有账号增删这两个功能就够了。不过一旦用户开始增多,权限稍微复杂一些,我们就需要认真思考用户管理权限的逻辑问题。避免在未来用户突然增长时,埋下无法解决的深坑。

如果你只是想找用户管理系统的源码,可以直接看文末结论部分。

一. 基础权限管理系统 - 简单清晰但无法承载复杂需求

基础权限系统的设计,一般都是从「用户-权限」这两个纬度开始的,管理员需要为每一个用户单独定义权限。

上图为 synology 服务器权限设置后台。服务器每新增一个访问账号,管理员就需要配置一遍权限表。如果系统中用户数在几十个上下,权限变动也不太多时,这种「用户-权限」的权限管理逻辑简单清晰,很好用。但当系统中用户开始增多,到达上千、上万时,此种管理方法的局限性就暴露出来了。

二. 基于 RBAC 模型的权限设计 - 引入角色概念

当用户数量到达一定规模后,管理员要修改一批用户的权限时,在「用户-权限」的模型中,几乎不可能手动完成。这时,我们在 用户权限 之间引入 角色 这个概念。将用户与权限直接对的应关系,改为用户关联角色,角色关联权限的方式来赋予用户权限,即「用户-角色-权限」。

引入角色的好处是将抽象的权限具像化,我们仅需要思考每个角色应该赋予什么样的权限,再将对应的用户指向角色,即可完成账号授权。

1.RBAC 权限模型概况

「用户-角色-权限」的权限逻辑就是目前行业内普遍使用的 RBAC (Role-Based Access Control:基于角色的权限控制)权限模型。其核心是引入角色的概念,用角色作为中间介质,使用户与权限配置更加灵活。

2.RBAC 权限模型的优势

(1)将抽象的权限具像化,分配权限时不用再思考抽象问题。

举例:新入职的初级销售小张找管理员开账号,管理员不用纠结到底要不要给小张开「查看部门销量」的权限,只需要把小张的账号指向「初级销售」的角色即可,这个角色有怎样的权限,早已被定义好。