DefaultCookieSerializer.setJvmRoute 不工作

DefaultCookieSerializer.setJvmRoute is not working

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

我可以让带有 Redis 的 SpringSession 按需要工作,并且为了让服务器关联工作,我想将 jvmRoute 附加到新 Cookie 中的会话。

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

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

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

我是不是漏掉了什么?任何帮助将不胜感激。

谢谢

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

因此 jvmRoute 实际上附加到会话 ID,但整个连接在写入 cookie 之前进行了 Base64 编码。

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