gpt4 book ai didi

java - 为什么 Tomcat 不能正确检索我的 session ?

转载 作者:行者123 更新时间:2023-11-28 22:53:47 25 4
gpt4 key购买 nike

我有两个 Java 应用程序在 Tomcat 上作为 servlet 运行。

应用程序 A 在另一个应用程序应用程序 B 上创建 session 。应用程序 A 然后使用 session cookie 登录应用程序 B。此 cookie 存储在 session 变量中并用于后续登录:

HttpSession session = request.getSession(false);
String cookieValue = session.getAttribute(sessionAttributeName);
HttpHeaders headers = new HttpHeaders();
headers.add("Cookie", cookieValue);
restTemplate.exchange(uri, HttpMethod.GET, new HttpEntity<>(headers), ProviderCostTOErrorWrapper.class);

这很好用。但是我需要能够使用休息客户端(我使用 PostMan)登录到应用程序 B。

所以我创建了一个服务来获取存储在应用程序 A session 中的应用程序 B 的 session cookie。它看起来像这样:

JSESSIONID=BF5C58B08062C84C648BA4DBE3A776BE; Path=/treatment/; HttpOnly

但是当我登录到应用程序 b 并检查 session 对象时,它有一个完全不同的 ID:

03A85C79914839E4F6D60B343B3535C4

它也有不同的创建时间。

知道我做错了什么吗?

最佳答案

两个值都用于两个不同的事物。

JSESSIONID=BF5C58B08062C84C648BA4DBE3A776BE
SESSIONID=03A85C79914839E4F6D60B343B3535C4

JSessionIdSessionId 不一样。

您认为 sessionId 是唯一的 String,由 Servlet 容器为每个单独的 HttpSession 定义.

另一方面,JsessioId 是跟踪参数,可以通过 ServletcookieURL 中提供应用程序接口(interface)。这是在创建 session 时定义的。因此,当您调用 request.getSession()request.getSession(true) 时,将创建 session 并将 JSessionId 存储在 cookies 。

HttpSession#getId()返回为特定 HttpSession 定义的唯一 String

关于java - 为什么 Tomcat 不能正确检索我的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32833721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com