java - 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。
我在这里错过了什么吗?任何帮助,将不胜感激。
谢谢
解决方案
如果您正在查看实际的会话 cookie 值并希望看到jvmRoute
附加的配置,请记住,从 Spring Session 2.0 开始,DefaultCookieSerializer
默认情况下使用 Base64 编码的 cookie。
所以jvmRoute
实际上是附加到会话 id 的,但是整个连接在写入 cookie 之前会进行 Base64 编码。
为了验证jvmRoute
,您可以尝试使用DefaultCookieSerializer
配置的 with进行测试serializer.setUseBase64Encoding(false)
。