Spring Boot 使用 Redis 进行 Session 共享(子域使用 Cookie 共享 Session)

相关文章:

CentOS 1810 安装 Redis 5.0.3

Windows 中 安装 Redis 解压版

Windows 中 安装 Redis 可执行程序

Windows 中 安装 Redis 桌面连接工具(RedisDesktopManager)

在 IntelliJ IDEA 2018.2.5 创建 Maven 项目

Spring Boot 使用 Redis 进行 Session 共享

Spring Boot 使用 Redis 进行 Session 共享(Ajax 跨域)


前言:前面介绍了 Spring Boot 使用 Redis 进行 Session 共享,在相同域名或者相同域名不同端口时,Session 可以共享,但是域名不同时,如 1.xuxiaowei.com.cn、与 2.xuxiaowei.com.cn分别时 域名xuxiaowei.com.cn的二级域名,前面的方法,不能进行 Session 共享,本文将介绍如何进行 子域中的 Session 共享。


特别说明:从 Spring Boot Starter Parent 2.1.5.RELEASE 开始,需要 Security 支持。否则运行时错误,会出现缺少:
          java.lang.ClassNotFoundException:
          org.springframework.security.web.authentication.RememberMeServices


  1. 在包 cn.com.xuxiaowei.demo2.config 中的类 RedisSessionConfig 中添加如下代码:
    将 Cookie 保存到域名 xuxiaowei.com.cn 下:
        /**
         * 在主域中储存Cookie,子域中共享Cookie
         */
        @Bean
        public CookieSerializer cookieSerializer() {
    
            // 默认 Cookie 序列化
            DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
    
            // Cookie名字,默认为 SESSION
            defaultCookieSerializer.setCookieName("SESSION_ID");
    
            // 域,这允许跨子域共享cookie,默认设置是使用当前域。
            defaultCookieSerializer.setDomainName("xuxiaowei.com.cn");
    
            // Cookie的路径。
            defaultCookieSerializer.setCookiePath("/");
    
            return defaultCookieSerializer;
        }
  2. 结果如下:



    两个域名的 Cookie 相同,如下:


    原始的 Cookie 如下:


    可以看出,设置前后,Cookie 的作用域是不同的。
发布了94 篇原创文章 · 获赞 32 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_32596527/article/details/89260452