如何解决会话ID问题,其中“ request.getSession()。getId()”返回“ 32个字符的会话ID +(.test)”

时间:2019-04-12 07:44:38

标签: java apache tomcat

我正在从session.getId()进入会话ID以下。我想找出可以纠正并删除带有会话ID的其他文本的来源。

62E4CAF17CD801A3A8E8BB8802610FF1.test

From HttpServletRequest request

HttpSession session = request.getSession();
String sessionId=session.getId();
System.out.println(sessionId);

预期结果:session.getId()中的62E4CAF17CD801A3A8E8BB8802610FF1

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您从request.getSession().getId()中获得的 是正确的会话ID。没有什么可以纠正的。您应该将其作为原子的,随机的,唯一的东西来处理,而不应暗示任何含义。

您不能假定id会保持32个字符长:在下一个较小的升级中,它可能是64个随机字符,或者它可能使用其他字母,而不仅仅是十六进制数字。可能后面跟着多个“ .test”。

例如我想不出满足此要求的有效商业案例。

也就是说,通常在server.xml的<Engine>元素中配置的jvmRoute通常会附加到会话ID中。如果您正在运行带有粘性会话的负载均衡器,则必须执行此操作-如果您将其卸下:运气好的话。而且,如果您今天不使用负载均衡器:您可能明天就可以。

对自己的未来(或任何正在维护该应用程序的其他人)好,不要嘲笑会话ID。