1. 说明
springSession 基于 Redis实现需要集成redis,框架本身只做了兼容redis存储,如果没有redis的话是会报错的。
2. 框架搭建
2.1. 引入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
|
2.2. application配置文件
1 2 3 4 5 6
| spring: redis: host: 192.168.5.101 session: store-type: redis
|
这里 spring.session.store-type=redis
可以不配置,换做另一种注解配置方法
配置类添加注解@EnableRedisHttpSession
即可。
1 2 3 4 5
| @Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600) public class SessionRedisConfig {
}
|
2.3. 启动类启动
1 2 3 4 5 6
| @SpringBootApplication public class D118SpringSessionRedisApp { public static void main(String[] args) { SpringApplication.run(D118SpringSessionRedisApp.class, args); } }
|
这样一个基于redis的就完成了
3. 高级配置
默认的sessionId是从Cookie中拿的,我们也可以不从Cookie中拿,用前后端分离中常用的token模式,将sessionId放入token中
需要添加配置类
1 2 3 4 5 6 7 8 9 10 11 12
| @Configuration public class SessionRedisConfig {
@Bean HttpSessionIdResolver sessionIdResolver() { return new HeaderHttpSessionIdResolver("token"); } }
|