在集群环境下,常见的基于Session的身份认证就会有一个问题,因为Session是跟着服务器走的,当用户在服务器1登陆成功后,当用户在访问服务器2的时候会因为服务器2没有用户的身份信息而再次跳转到认证页面。解决的方案很简单,不在服务器上单独的管理Session,而是把原本放在服务器上的Session抽离出来放在一个独立的存储中。
⒈使用spirng-session解决Session集群问题
我们只需要告诉spirng-session存放Session的独立存储是什么,以及独立存储的连接信息即可。spirng-session支持以下类型
package org.springframework.boot.autoconfigure.session; public enum StoreType {
REDIS,
MONGODB,
JDBC,
HAZELCAST,
NONE; private StoreType() {
}
}
我使用Redis作为示例。一般的生产环境也是Redis,因为1.Redis天生支持过期机制。2.Session的读取是非常频繁的,Redis的实力你我都知道的。
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.3.4.RELEASE</version>
</dependency>
spring.session.store-type=redis
spring.session.redis.host=127.0.0.1
spring.session.redis.port=6379