前面章节创建了 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 (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,name) VALUES (1,'管理员'), (2,'普通用户');
为角色绑定菜单,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_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
到这里,准备工作就完成了。点击下载项目代码:
后续章节将在此基础上进行演示。