✅P228_商城业务-认证服务-自定义Spring Session完成子域session共享
2024/2/14小于 1 分钟
解决子域session共享问题
cfmall-product服务和cfmall-auth-server服务各配置一份,内容相同
session默认使用jdk进行序列化,不方便阅读,修改为json。配置类设置session使用json序列化,并放大作用域;
解决使用json序列化方式来序列化对象数据到redis中: spring-session/SessionConfig.java at 2.4.6 · spring-projects/spring-session · GitHub
package com.gyz.cfmall.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;
@Configuration
public class CfMalllSessionConfig {
    /**
     * 放大作用域,解决子域共享问题
     *
     * @return
     */
    @Bean
    public CookieSerializer cookieSerializer() {
        DefaultCookieSerializer serializer = new DefaultCookieSerializer();
        serializer.setCookieName("CFMALLSESSION");
        serializer.setDomainName("cfmall.com");
        return serializer;
    }
    /**
     * 使用json序列化将对象序列化存储到redis中
     *
     * @return
     */
    @Bean
    public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
        return new GenericJackson2JsonRedisSerializer();
    }
}Index.html修改
前端页面修改,登录用户需要进行非空判断
<li>
    <a href="http://auth.cfmall.com/login.html">你好,请登录:[[${session.loginUser==null?'':session.loginUser.nickname}}]]</a>
</li>清空Redis和session后重新启动测试、执行登录操作;
