要求是登录前后的 JSESSIONID 必须不同。
流程是 login.jsp -> loginwebaction -> loginsuccess.jsp -> filter -> otheraction
我的代码是
- 成功登录后(在 loginwebaction 中),
- 将所有属性从会话复制到地图,
- 使会话无效,
- 重新创建会话
HttpSession session = request.getSession(true);
- 将所有属性从地图复制到新会话,
登录成功后Jsessionid发生变化,显示loginsuccess.jsp。但我有一个问题。
在此之后,如果我单击任何其他链接以执行其他操作,它会点击过滤器。在过滤器中,如果他已登录,我必须检查会话以获取用户信息,否则必须显示错误页面。
HttpSession session = request.getSession();
if(null == session.getAttribute("USER_INFO")){
//redirect to error page
}
问题是:在过滤器中访问的会话是新的,不知道它是如何重新创建的。过滤器中的代码是
任何人都可以帮我解决这个问题,如何进一步纠正这个会话变化?