gpt4 book ai didi

无法从新页面访问 Java session 变量

转载 作者:行者123 更新时间:2023-12-02 12:08:11 25 4
gpt4 key购买 nike

我正在处理一些旧的 Java 代码,其身份验证已损坏。 Web 应用程序以一个 jsp 文件启动,该文件成功创建并验证了用户对象。然后使用以下代码创建一个 session 变量。

session.setAttribute("guiUser", userIdentity);

如果我决定在同一个 jsp 文件中获取此用户对象:

UserIdentity foo = (UserIdentity) session.getAttribute("guiUser");
System.out.println(foo.getName());

我可以成功检索经过身份验证的用户对象。

但是,该页面随后使用

重定向到我工作区中不同项目中的另一个 jsp
response.sendRedirect(targetPage);

当我到达这个新的 jsp 页面时,会先运行登录检查 jsp。登录检查具有以下代码来从 session 变量实例化用户对象(或者至少这是我认为它应该做的事情。)

<jsp:useBean id="guiUser" class="com.ussposco.sso.UserIdentity" scope="session"/>
<% (code that uses guiUser object) %>

这段代码似乎不起作用,因为用户对象为空。所以我尝试使用此代码从 session 中获取用户对象。

UserIdentity foo = (UserIdentity) session.getAttribute("guiUser");
System.out.println(foo.getName());

并且该对象仍然为空。

我对 Java Web 应用程序还很陌生,但我认为这是响应重定向方式的问题。当我认为 Chrome 中应该只有一个 cookie 时,我却看到了两个不同的 cookie。此外,在生产网站上,它更改了与我正在使用的代码(显然已经过时)使用的不同 cookie 的值。

最佳答案

当您重定向到不同的应用程序时,您将不会获得相同的 session 对象。为此需要单点登录 (SSO) 之类的东西。

关于无法从新页面访问 Java session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46737556/

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