springboot整合SpringSession
1、引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
</dependencies>
2、springboot配置
application.properties配置:保存类型
spring.session.store-type=redis # Session store type.
session过期时间:
server.servlet.session.timeout= # Session timeout. If a duration suffix is not specified, seconds is used.
其它配置信息可参考官网:
spring.session.redis.flush-mode=on_save # Sessions flush mode.
spring.session.redis.namespace=spring:session # Namespace for keys used to store sessions.
连接信息配置:
spring.redis.host=localhost # Redis server host.
spring.redis.password= # Login password of the redis server.
spring.redis.port=6379 # Redis server port.
3、开启springSession
主类加上注解@EnableRedisHttpSession
@EnableRedisHttpSession
4、使用
注意:
1、需要保存到redis中的数据必须序列化。
2、需要实现session共享的微服务都必须整合SpringSession。
5、解决子域session共享、cookie进行json序列化
MySessionConfig配置
package com.yanxizhu.family.booking.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
/**
* @description: springSession配置
* @author: <a href="mailto:batis@foxmail.com">清风</a>
* @date: 2022/3/10 20:11
* @version: 1.0
*/
@Configuration
public class MySessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
//设置共享域名
defaultCookieSerializer.setDomainName("yanxizhu.com");
//设置session名称
defaultCookieSerializer.setCookieName("YANXIZHUSESSION");
return defaultCookieSerializer;
}
//session序列化机制
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
return new GenericJackson2JsonRedisSerializer();
}
}
注意:需要session共享的微服务都需要配置,或者抽取到公共模块。
6、多系统-session共享问题(单点登录)
抽取单独的认证中心微服务处理单点登录
单点登录,可参考一个开源单点登录项目,许雪里/xxl-sso
评论 (0)