在我们日常的生产环境中,可能会通过nginx或apach进行分发,以保证系统的稳定性。在这种情况下,因为会涉及到多台服务器,我们必须通过一定的方式实现session共享,也就是服务器A需要拿到服务器B的session。 1、我们看一下springboot为我们提供的session共享有哪些方式,下面的这个类中是springboot为我们提供的几种方式
public enum StoreType {
REDIS,
MONGODB,
JDBC,
HAZELCAST,
NONE;
private StoreType() {
}
}
2、在这里我们选择redis,在application.properties中配置
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=zhbinXXXX
3、引入spring-session的依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
4、需要注意的点 1)启动项目的时候先打开redis服务; 2)在redis中放的东西要序列化; 3)BufferedImage不能序列化,我们生成一个对象存放验证码及过期时间即可。 4)用两个端口启动项目,如果端口A登录,用端口B可直接访问,说明session已经共享。