【发布时间】: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());
我可以成功检索到经过身份验证的用户对象。
但是,页面随后使用
重定向到我工作区中不同项目中的另一个 jspresponse.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 的值与我正在使用(显然已过时)使用的代码不同。
【问题讨论】: