SpringBoot与SpringSecurity结合,如何设计权限控制的基本数据模型?

2026-05-29 14:453阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计638个文字,预计阅读时间需要3分钟。

SpringBoot与SpringSecurity结合,如何设计权限控制的基本数据模型?

系列文章目录:

1.SpringBoot整合SpringSecurity实现权限控制(一):实现原理

2.文档目录

3.前言

4.一、RBAC是什么?

5.二、数据模型

6.三、数据模型的测试

SpringBoot与SpringSecurity结合,如何设计权限控制的基本数据模型?


系列文章目录
​《SpringBoot整合SpringSecurity实现权限控制(一):实现原理》



本文目录

  • ​​前言​​
  • ​​一、RBAC是什么?​​
  • ​​二、数据模型​​
  • ​​三、数据模型的测试​​

前言

  • 在上篇文章中我们仅仅使用了静态权限数据进行了模拟测试。实际正常情况的流程是:
  • 由管理员给用户分配权限,权限数据写到数据库中。
  • 后台服务在进行用户认证时从数据库读取用户的权限数据(动态数据)。
    • 本文将通过 RBAC(Role-Based Access Control:基于角色的访问控制策略)进行权限模型设计

    一、RBAC是什么?

    • 通过用户关联角色,角色关联功能(资源)的方式,使得用户间接持有了功能(资源)。
    • 示例

    二、数据模型

    • 根据以上RBAC的理解,我们一般会对数据模型这样设计:
  • 用户表:存储用户信息,比如:张三、李四
  • 角色表:存储角色信息,比如:系统管理员,普通用户
  • 用户角色表:存储用户与角色的对应关系,一个用户可以拥有多个角色
  • 功能(资源)表:存储系统功能资源(一般为某个菜单或菜单下的某些操作),比如用户管理菜单,用户的新增、修改、删除等
  • 权限表:存储角色与系统功能资源的对应关系,一个角色可以拥有多个功能。
    • ER图

    三、数据模型的测试

    • 建立了以上的模型,我们可以通过一段简单的SQL语句来查询某个用户所拥有的权限:
    SELECT
    *
    FROM
    sys_menu
    WHERE
    id IN ( SELECT menu_id FROM sys_permission WHERE role_id IN ( SELECT role_id FROM sys_user_role WHERE user_id = 15 ) )


    本文共计638个文字,预计阅读时间需要3分钟。

    SpringBoot与SpringSecurity结合,如何设计权限控制的基本数据模型?

    系列文章目录:

    1.SpringBoot整合SpringSecurity实现权限控制(一):实现原理

    2.文档目录

    3.前言

    4.一、RBAC是什么?

    5.二、数据模型

    6.三、数据模型的测试

    SpringBoot与SpringSecurity结合,如何设计权限控制的基本数据模型?


    系列文章目录
    ​《SpringBoot整合SpringSecurity实现权限控制(一):实现原理》



    本文目录

    • ​​前言​​
    • ​​一、RBAC是什么?​​
    • ​​二、数据模型​​
    • ​​三、数据模型的测试​​

    前言

    • 在上篇文章中我们仅仅使用了静态权限数据进行了模拟测试。实际正常情况的流程是:
  • 由管理员给用户分配权限,权限数据写到数据库中。
  • 后台服务在进行用户认证时从数据库读取用户的权限数据(动态数据)。
    • 本文将通过 RBAC(Role-Based Access Control:基于角色的访问控制策略)进行权限模型设计

    一、RBAC是什么?

    • 通过用户关联角色,角色关联功能(资源)的方式,使得用户间接持有了功能(资源)。
    • 示例

    二、数据模型

    • 根据以上RBAC的理解,我们一般会对数据模型这样设计:
  • 用户表:存储用户信息,比如:张三、李四
  • 角色表:存储角色信息,比如:系统管理员,普通用户
  • 用户角色表:存储用户与角色的对应关系,一个用户可以拥有多个角色
  • 功能(资源)表:存储系统功能资源(一般为某个菜单或菜单下的某些操作),比如用户管理菜单,用户的新增、修改、删除等
  • 权限表:存储角色与系统功能资源的对应关系,一个角色可以拥有多个功能。
    • ER图

    三、数据模型的测试

    • 建立了以上的模型,我们可以通过一段简单的SQL语句来查询某个用户所拥有的权限:
    SELECT
    *
    FROM
    sys_menu
    WHERE
    id IN ( SELECT menu_id FROM sys_permission WHERE role_id IN ( SELECT role_id FROM sys_user_role WHERE user_id = 15 ) )