文章目录
1.环境
SpringBoot3.2.8、JDK17、SpringSecurity6.1.11、Redis6.0.8
认证涉及:
- 验证码过滤器及用户名密码认证
- 密码加密及密码自动升级更新
- 记住我
- 并发会话
- 会话存储
- csrf防护
- cros跨域(未配置,有兴趣自行实现)
- 统一异常处理
2.pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.8</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!-- </dependency>-->
<!--springboot3.0接入mybatisPlus的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.51</version>
</dependency>
<!--redis会话存储相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>3.2.4</version>
</dependency>
</dependencies>
3.application.yml
server:
port: 8080
servlet:
session:
timeout: 30
spring:
security:
user:
name: root
password: 123456
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
datasource:
url: jdbc:mysql://192.168.159.100:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
# 最大连接池数量
maximum-pool-size: 20
# 最小空闲线程数量
minimum-idle: 10
# 配置获取连接等待超时的时间
connectionTimeout: 30000
# 校验超时时间
validationTimeout: 5000
# 空闲连接存活最大时间,默认10分钟
idleTimeout: 600000
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
maxLifetime: 1800000
# 连接测试query(配置检测连接是否有效)
connectionTestQuery: SELECT 1
type: com.zaxxer.hikari.HikariDataSource
data:
redis:
port: 6379
host: 192.168.159.100
logging:
level:
org:
springframework:
security: TRACE
mybatis-plus:
mapper-locations: classpath:com.linging.mapper/*Mapper.xml
4.SpringSecurity6主配置类
@Configuration
@EnableWebSecurity // 高版本使用注解
@EnableRedisIndexedHttpSession // 注入FindByIndexNameSessionRepository,实现redis持久化会话
public class SecurityConfig {
@Resource
private MyUserDetailService myUserDetailService;
@Resource
private DataSource dataSource;
@Resource
private FindByIndexNameSessionRepository

最低0.47元/天 解锁文章
2409

被折叠的 条评论
为什么被折叠?



