我正在处理一些破解身份验证的旧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) %>
此代码似乎不起作用,因为用户对象为null。所以我尝试使用此代码从会话中获取用户对象。
UserIdentity foo = (UserIdentity) session.getAttribute("guiUser");
System.out.println(foo.getName());
对象仍为空。
我对Java Web应用程序很陌生,但我认为这是重定向响应方式的问题。当我认为应该只有一个时,我可以在Chrome中看到两个不同的Cookie。此外,在生产网站上,它会更改不同于我正在使用的代码(显然已过时)使用的cookie的值。
答案 0 :(得分:1)
当您重定向到不同的应用程序时,您将无法获得相同的会话对象。为此需要单身唱歌(SSO)。