Mysql_security_spring boot:spring security用mysql实现动态权限管理(spring boot 2.3.3)

一,动态权限管理的优点和缺点

1,优点:

因为控制权限的数据保存在了mysql或其他存储系统中,

可以动态修改权限控制,无需改动代码和重启应用,

权限变更时灵活方便

2,缺点:

权限的设置需要保存在外部存储系统,

每次request时都需要查库处理,

高并发时影响效率

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,演示项目的相关信息

1,项目地址:

https://github.com/liuhongdi/securitydynamic

2,项目功能说明

通过修改mysql数据库中的数据,

实现对权限验证的动态控制,无需修改代码和重启应用

3,项目结构:如图:

5322510fce0037773616f6923f2a943d.png

1b61d9742202cc6c1301109cac47e819.png

三,配置文件说明

1,pom.xml

org.springframework.boot

spring-boot-starter-security

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-validation

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.3

mysql

mysql-connector-java

runtime

com.alibaba

fastjson

1.2.72

2,application.properties:

#thymeleaf

spring.thymeleaf.cache=falsespring.thymeleaf.encoding=UTF-8spring.thymeleaf.mode=HTML

spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html

#mysql

spring.datasource.url=jdbc:mysql://localhost:3306/security?characterEncoding=utf8&useSSL=false

spring.datasource.username=root

spring.datasource.password=lhddemo

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#mybatis

mybatis.mapper-locations=classpath:/mapper/*Mapper.xml

mybatis.type-aliases-package=com.example.demo.mapper

#error

server.error.include-stacktrace=always

#log

logging.level.org.springframework.web=trace

logging.level.org.springframework.security=debug

3,数据库:

e29ae782139e1d1b948f5e1217096fca.png

建立各个表的sql:

CREATE TABLE`sys_user` (

`userId`int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',

`userName`varchar(100) NOT NULL DEFAULT '' COMMENT '用户名',

`password`varchar(100) NOT NULL DEFAULT '' COMMENT '密码',

`nickName`varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '昵称',PRIMARY KEY(`userId`),UNIQUE KEY`userName` (`userName`)

) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表'

INSERT INTO `sys_user` (`userId`, `userName`, `password`, `nickName`) VALUES(1, 'lhd', '$2a$10$yGcOz3ekNI6Ya67tqQueS.raxyTOedGsv5jh2BwtRrI5/K9QEIPGq', '老刘'),

(2, 'admin', '$2a$10$yGcOz3ekNI6Ya67tqQueS.raxyTOedGsv5jh2BwtRrI5/K9QEIPGq', '管理员'),

(3, 'merchant', '$2a$10$yGcOz3ekNI6Ya67tqQueS.raxyTOedGsv5jh2BwtRrI5/K9QEIPGq', '商户老张');

CREATE TABLE`sys_user_role` (

`urId`int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',

`userId`int(11) NOT NULL DEFAULT '0' COMMENT '用户id',

`roleName`varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '角色id',PRIMARY KEY(`urId`),UNIQUE KEY`userId` (`userId`,`roleName`)

) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户角色关联表'

INSERT INTO `sys_user_role` (`urId`, `userId`, `roleName`) VALUES(1, 2, 'ADMIN'),

(2, 3, 'MERCHANT');

CREATE TABLE`sys

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值