这个要求是JSESSIONID在登录之前和之后必须不同。
流程是login.jsp -> loginwebaction -> loginsuccess.jsp -> filter -> otheraction
我的代码是
HttpSession session = request.getSession(true);在成功登录并显示loginsuccess.jsp后,Jsessionid将发生更改。但我有个问题。
在此之后,如果我单击其他任何其他操作的链接,它就会点击一个过滤器。在过滤器,我必须检查会话的用户信息,如果他已登录,否则错误页必须显示。
HttpSession session = request.getSession();
if(null == session.getAttribute("USER_INFO")){
//redirect to error page
}问题是:在过滤器中访问的会话是新的,不知道如何重新创建。过滤器中的代码是
有谁能在这方面帮助我,如何进一步纠正本届会议的变化?
发布于 2013-06-18 18:26:01
正如我所看到的,代码中的问题是:
HttpSession session = request.getSession();在Servlet中,如果没有现有会话,request.getSession()将创建一个新会话。您需要将其更改为:
HttpSession session = request.getSession(false);这将确保它返回现有的会话对象(如果有效),或者如果没有会话,则返回null。
要添加更多内容,以下代码行实际上是相同的:
HttpSession session = request.getSession();
//Overloaded getSession with 'true' boolean argument
HttpSession session = request.getSession(true);希望这能有所帮助。
如果这不能解决你的问题,问题可能是别的问题。请添加您的usecase的骨架代码,以便我可以尝试。
https://stackoverflow.com/questions/17018695
复制相似问题