首页 > 解决方案 > DefaultCookieSerializer.setJvmRoute 不工作

问题描述

我正在尝试将 SpringSession 合并到我的应用程序中,但我也想保留服务器亲和力,因为我有需要粘性会话的 Talend 作业。

我可以让带有 Redis 的 SpringSession 正常工作,并且为了让服务器亲和性正常工作,我想在新的 Cookie 中将 jvmRoute 附加到会话中。

在我的配置文件中,我根据文档https://docs.spring.io/spring-session/docs/current/reference/html5/guides/java-custom-cookie.html创建以下 bean

@Bean
public CookieSerializer cookieSerializer() {
    DefaultCookieSerializer serializer = new DefaultCookieSerializer();
    serializer.setCookieName("JSESSIONID");
    serializer.setJvmRoute("my-app1");
    return serializer;
}

这会将 SESSION 重命名为 JSESSIONID,所以我知道它可以工作,但它不会将 jvmRoute 附加到 sessionId。

我在这里错过了什么吗?任何帮助,将不胜感激。

谢谢

标签: javaspringredissession-cookiesspring-session

解决方案


如果您正在查看实际的会话 cookie 值并希望看到jvmRoute附加的配置,请记住,从 Spring Session 2.0 开始,DefaultCookieSerializer默认情况下使用 Base64 编码的 cookie。

所以jvmRoute实际上是附加到会话 id 的,但是整个连接在写入 cookie 之前会进行 Base64 编码。

为了验证jvmRoute,您可以尝试使用DefaultCookieSerializer配置的 with进行测试serializer.setUseBase64Encoding(false)


推荐阅读