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

基于上述表,我们准备一些数据,用于后续的权限管理。
注意:数据库表结构参考“Spring Security6 数据库认证”。
插入两个用户数据,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');创建“系统管理”和“用户管理”菜单,并且插入对应的子菜单数据。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 (id,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');创建两个角色,分别是“管理员”和“普通用户”。SQL 如下:
INSERT INTO spring_security.`role` (id,code,name) VALUES
(1,'admin','管理员'),
(2,'normal','普通用户');为角色绑定菜单,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);将角色绑定到用户上面,用户 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,如下图:

最后,在 application.properties 中添加数据库配置信息,如下:
spring.application.name=spring_security_demo7
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到这里,准备工作就完成了。点击下载项目代码:
运行项目,预览效果如下图:


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