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>
<!--redis本身的配置等-->
<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
# password: redis
session:
store-type: redis #使用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 {

/**
* 使用 Header方式获取sessionID
* @return
*/
@Bean
HttpSessionIdResolver sessionIdResolver() {
return new HeaderHttpSessionIdResolver("token");
}
}