用户-角色-权限小解

376 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

对于web项目中,关于用户角色权限设计的模块一直特别模糊,今天借助了一段开源代码,把这段用户角色权限模块给梳理了一下。

用户权限大致就分三个级别

1.超级管理员

2.有些用户只能对或全部或部分模块进行管理(例如添加删除修改)

3.有些用户只能浏览或全部或部分栏目的信息(不能进行删除修改)

一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户—角色—权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,一般者都是多对多的关系。

基本上表有5个,分别为:

  1. 用户表
  2. 角色表
  3. 权限表
  4. 角色用户表
  5. 角色权限表

登录流程

  1. 根据用户名和密码从用户表t_employee中查询是否有该用户

  2. 如果有用户,则判断用户是否为超级管理员(超级管理员拥有所有权限),则直接从权限表t_privilege中获取所有权限

  3. 如果不是超级管理员,则根据返回的用户的id,从角色用户表t_role_employee中中查询出用户对应的角色,一个用户可以对应多个角色,返回的是角色id的List

  4. 根据返回的角色List ,从权限表t_privilege查询角色对应的权限。这里权限表t_privilege和角色权限表t_role_privilege中有对应的字段,分别为keyprivilege_key字段。返回的是所有符合条件的t_privilege中的数据。

    下面是梳理出来的流程图

用户角色权限设计表.png

这应该是最简单的"用户-角色-权限"模型了,其实在登录的时候,还有其他的操作,比如缓存登录信息,生成或者校验token信息等等。