Java Web,正在自动设置会话
Java Web, sessions are being set automatically
我正在尝试在我的 java 网络项目中创建登录过滤器。问题是,当我调用 request.getSession(false) 时,返回的会话对象不为空,换句话说,会话是活动的。但我确定我没有在代码的任何其他地方调用 getSession() 。
即使我删除了这个过滤器,它也不起作用。如果我打开我的浏览器开发工具,在网络选项卡中,它会显示一个 jsessionid 集。会话是自动设置的吗?
如果你想跟踪一个 "logged in user",那么我想你正在寻找的是使用 HttpSession 来跟踪它,就像这样:
HttpSession session = request.getSession();
session.setAttribute("loggedInUser", userObject);
Ypu 可以在您需要时从会话中检索它:
Object loggedInUser = session.getAttribute("loggedInUser");
稍后,当用户需要 "log out" 时,从会话中清除存储的用户:
session.removeAttribute("loggedInUser");
在评论What's the point to have a HttpSession class/api if i have to implement everything by myself?
中回答你的问题:HttpSession
表示与特定客户端的对话,以便可以正确识别和处理来自同一客户端的后续请求。它根本不代表 "logged in user",这是域的特定要求 - 并非所有服务都需要身份验证。
最后,如果您需要有关何时创建 JSESSIONID cookie 的更多详细信息,请阅读 this question。
我正在尝试在我的 java 网络项目中创建登录过滤器。问题是,当我调用 request.getSession(false) 时,返回的会话对象不为空,换句话说,会话是活动的。但我确定我没有在代码的任何其他地方调用 getSession() 。 即使我删除了这个过滤器,它也不起作用。如果我打开我的浏览器开发工具,在网络选项卡中,它会显示一个 jsessionid 集。会话是自动设置的吗?
如果你想跟踪一个 "logged in user",那么我想你正在寻找的是使用 HttpSession 来跟踪它,就像这样:
HttpSession session = request.getSession();
session.setAttribute("loggedInUser", userObject);
Ypu 可以在您需要时从会话中检索它:
Object loggedInUser = session.getAttribute("loggedInUser");
稍后,当用户需要 "log out" 时,从会话中清除存储的用户:
session.removeAttribute("loggedInUser");
在评论What's the point to have a HttpSession class/api if i have to implement everything by myself?
中回答你的问题:HttpSession
表示与特定客户端的对话,以便可以正确识别和处理来自同一客户端的后续请求。它根本不代表 "logged in user",这是域的特定要求 - 并非所有服务都需要身份验证。
最后,如果您需要有关何时创建 JSESSIONID cookie 的更多详细信息,请阅读 this question。