Spring Security6 授权管理准备数工作

前面章节创建了 spring_security 数据,并且在该数据库中创建了用户(users)、角色(role)、菜单(menu)、角色菜单(role_menu)和 角色用户(role_user)表,它们的关系如下:

image.png

基于上述表,我们准备一些数据,用于后续的权限管理。

注意:数据库表结构参考“Spring Security6 数据库认证”。

准备数据

用户(users)数据

插入两个用户数据,zhangsan 的密码为 123456,lisi 的密码为 aaaaaa。SQL 如下:

INSERT INTO spring_security.users (id,username,password) VALUES
    (1,'zhangsan','$2a$10$5wJSJGpCj1dFRKTWjdTyJ.NI2CTwFsBIyf.o8A07sH.MtqMFAbmWi'),
    (2,'lisi','$2a$10$BaNPfmY3euVmVlI/E2V7CedEYHyPuBINMVALTNKKQI6KxILhUOB3W');

菜单(menu)数据

创建“系统管理”和“用户管理”菜单,并且插入对应的子菜单数据。SQL 如下:

INSERT INTO spring_security.menu (id, name,url,parentid,permission) VALUES
    (1, '系统管理','/sys',0,'menu:sys'),
    (3, '新增系统','/sys/add',1,'menu:sys:add'),
    (4, '修改系统','/sys/update',1,'menu:sys:update'),
    (5, '删除系统','/sys/delete',1,'menu:sys:delete'),
    (6, '导出系统','/sys/export',1,'menu:sys:export'),
    (7, '查询系统','/sys/query',1,'menu:sys:query');
   
INSERT INTO spring_security.menu (name,url,parentid,permission) VALUES
   (2, '用户管理','/user',0,'menu:user'),
    (8, '新增用户','/user/add',2,'menu:user:add'),
    (9, '更新用户','/user/update',2,'menu:user:update'),
    (10, '删除用户','/user/delete',2,'menu:user:delete'),
    (11, '导出用户','/user/export',2,'menu:user:export'),
    (12, '查询用户','/user/query',2,'menu:user:query'),
    (13, '用户授权','/user/auth',2,'menu:user:auth');

角色(role)数据

创建两个角色,分别是“管理员”和“普通用户”。SQL 如下:

INSERT INTO spring_security.`role` (id,name) VALUES
    (1,'管理员'),
    (2,'普通用户');

角色菜单(role_menu)数据

为角色绑定菜单,SQL 如下:

-- 管理员角色拥有所有权限
INSERT INTO spring_security.role_menu (mid,rid) VALUES
    (1,1),
    (2,1),
    (3,1),
    (4,1),
    (5,1),
    (6,1),
    (7,1),
    (8,1),
    (9,1),
    (10,1),
   (11,1),
    (12,1),
    (13,1);
   
-- 普通用户仅仅拥有用户管理的权限
INSERT INTO spring_security.role_menu (mid,rid) VALUES
    (2,2),
    (8,2),
    (9,2),
    (10,2),
    (11,2),
    (12,2),
    (13,2);

角色用户(role_user)数据

将角色绑定到用户上面,用户 zhangsan 绑定系统管理员。用户 lisi 绑定普通用户,SQL 如下:

INSERT INTO spring_security.role_user (uid,rid) VALUES
    (1,1),
    (2,2);

到这里,数据准备工作就完成了。

编写项目基础代码

下面将引入 MyBatis 和 MySQL 数据库的 Maven 依赖,如下:

<!-- mybatis依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.14</version>
</dependency>

然后,编写 model、mapper 和 service,如下图:

image.png

最后,在 application.properties 中添加数据库配置信息,如下:

spring.application.name=spring_security_demo6

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_security?serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=aaaaaa

到这里,准备工作就完成了。点击下载项目代码:

spring_security_demo6.zip

后续章节将在此基础上进行演示。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号