携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
对于web项目中,关于用户角色权限设计的模块一直特别模糊,今天借助了一段开源代码,把这段用户角色权限模块给梳理了一下。
用户权限大致就分三个级别
1.超级管理员
2.有些用户只能对或全部或部分模块进行管理(例如添加删除修改)
3.有些用户只能浏览或全部或部分栏目的信息(不能进行删除修改)
一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户—角色—权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,一般者都是多对多的关系。
基本上表有5个,分别为:
- 用户表
- 角色表
- 权限表
- 角色用户表
- 角色权限表
登录流程
-
根据用户名和密码从用户表t_employee中查询是否有该用户
-
如果有用户,则判断用户是否为超级管理员(超级管理员拥有所有权限),则直接从权限表t_privilege中获取所有权限
-
如果不是超级管理员,则根据返回的用户的id,从角色用户表t_role_employee中中查询出用户对应的角色,一个用户可以对应多个角色,返回的是角色id的List
-
根据返回的角色List ,从权限表t_privilege查询角色对应的权限。这里权限表t_privilege和角色权限表t_role_privilege中有对应的字段,分别为key和privilege_key字段。返回的是所有符合条件的t_privilege中的数据。
下面是梳理出来的流程图
这应该是最简单的"用户-角色-权限"模型了,其实在登录的时候,还有其他的操作,比如缓存登录信息,生成或者校验token信息等等。