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

我可以根据需要使Redis正常运行SpringSession,并且要使服务器关联正常工作,我想在新Cookie中将jvmRoute附加到 session 中。

在我的配置文件中,根据docs 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上。

我在这里想念什么吗?任何帮助,将不胜感激。

谢谢

最佳答案

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

因此jvmRoute实际上是附加到 session ID上的,但是在将整个串联连接到Cookie之前,对整个串联进行了Base64编码。

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

10-03 00:14