转载来源: 一文搞懂spring权限认证表设计

用户表(sys_user),角色表(sys_role),权限表(sys_permission),资源表(sys_resource),它们是SpringSecurity表单验证的核心表,它之间是一对多的关系

image.png

表说明

  • sys_user(用户表): 用户表主要存储用户登录系统的账号(登录名),密码,状态等,一个用户可以有多个角色,通过 sys_user_role 存储用户和角色的关系
  • sys_role(角色表): 角色表是权限的集合,通过sys_role_permission 存储角色和权限的关系
  • sys_permission(权限表): 权限表是资源的集合,通过 sys_permission_resource 存储权限对应的资源
  • sys_resource(资源表): 资源表存储整个系统所有的url请求地址, 用户通过角色、权限、最终关联到资源,用户有哪些资源,权限过滤器就会允许哪些url请求能够访问系统

表详细设计PDM图

箭头指向前端的是父表,末端的是子表,子表是关系表,用于存储2个表之间一对多或者多对多的关系

image.png

有一句话讲的是技术是为业务服务的,所以一个系统功能,也会对应一个线下业务操作场景,也就是说系统功能是线下业务场景在线上系统的映射,权限系统设计也基于这个思路实现的,每一个功能会对应到一个现实业务场景。

虚拟一个业务场景来说明表关系

  1. 我们入职一家公司,公司会给开一个工号(sys_user): SH001
  2. 给你分配职位(sys_role): 总经理
  3. 你这个职位的管理权力(sys_permission):管理人事部、管理财务部、管理销售部
  4. 你可以用这些权力做什么事情(sys_resource):比如,我具备管理人事部的权利,就可以查询人员列表、新增员工、停用员工

系统场景描述就是这样的

我们进入使用系统,管理员会先开一个账号(sys_user),给账号分配角色(sys_role),给角色赋予权限(sys_permission),权限赋予资源(sys_resource) ,资源就是我们最终能访问的URL。

账号有哪些资源,权限过滤器就会允许哪些请求能访问系统。

Q.E.D.


做一个热爱生活的人