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