【问题标题】:Java session variable not accessible from new page无法从新页面访问 Java 会话变量
【发布时间】:2018-03-26 00:59:03
【问题描述】:

我正在处理一些身份验证损坏的旧 Java 代码。 Web 应用程序从一个成功创建和验证用户对象的 jsp 文件开始。然后使用以下代码创建会话变量。

session.setAttribute("guiUser", userIdentity);

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

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

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

但是,页面随后使用

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

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

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

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

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

而且对象还是空的。

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

【问题讨论】:

    标签: java jsp session


    【解决方案1】:

    当您重定向到不同的应用程序时,您将不会获得相同的会话对象。为此,需要像 Single Sing On (SSO) 这样的东西。

    【讨论】:

    • 谢谢,我认为这是问题所在。我不认为 SSO 是一种选择,我会看看我是否可以将这两个应用程序合二为一。
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多