Springboot SpringSession Integration

1、引入依赖

<dependencies>
	<dependency>
		<groupId>org.springframework.session</groupId>
		<artifactId>spring-session-data-redis</artifactId>
	</dependency>
</dependencies>

2、springboot配置

application.propertiesConfiguration:保存Type

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.

其它Configuration信息可参考官网

spring.session.redis.flush-mode=on_save # Sessions flush mode.
spring.session.redis.namespace=spring:session # Namespace for keys used to store sessions.

连接信息Configuration:

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中的Data必须序列化。

2、需要Implementationsession共享的Microservices都必须整合SpringSession。

5、解决子域session共享、cookie进行json序列化

MySessionConfigConfiguration

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共享的Microservices都需要Configuration,或者抽取到公共模块。

6、多系统-session共享问题(单点登录)

抽取单独的认证中心Microservices处理Single Sign-On

Single Sign-On,可参考一个开源Single Sign-On项目,许雪里/xxl-sso