我正在尝试在Java Web项目中创建一个登录过滤器。问题是,当我调用request.getSession(false)时,返回的会话对象不为null,换句话说,该会话处于活动状态。但是我确定我没有在代码的任何其他地方调用getSession()。 即使我删除了此过滤器,它也不起作用。如果打开浏览器开发工具,则在“网络”选项卡中,它将显示一个jsessionid集。会话是自动设置的吗?
答案 0 :(得分:0)
如果您想跟踪“登录用户”,那么我想您正在寻找的是使用HttpSession进行跟踪,如下所示:
{
"data": {
"opt1": {
"id": "1"
},
"opt2": {
"id": "1"
}
}
}
只要需要,Ypu可以从会话中检索它,
HttpSession session = request.getSession();
session.setAttribute("loggedInUser", userObject);
然后,当用户需要“注销”时,请从会话中清除存储的用户:
Object loggedInUser = session.getAttribute("loggedInUser");
要在评论session.removeAttribute("loggedInUser");
中回答您的问题:HttpSession
表示与特定客户端的对话,因此可以识别并正确处理来自同一客户端的后续请求。它根本不表示“登录用户”,这是域中的特定要求-并非所有服务都需要身份验证。
最后,如果您需要有关何时创建JSESSIONID cookie的更多详细信息,请阅读this question。