了解HttpSessions和身份验证

时间:2015-03-25 19:08:58

标签: java-ee cookies httpsession

我一直在使用使用基于表单的身份验证的J2EE应用程序。我理解HttpSession对象,以及它们用于存储用户数据(例如购物车)的不同用例,因为http是无状态协议。

当客户发出请求(例如,向购物车添加内容)时,会创建会话(如果不存在),并在会话中创建或更新购物车。当响应被发送回客户端时,名为JSessionID的HTTP cookie是响应的一部分,并且该cookie存储在浏览器中。因此,当后续请求发送到服务器时(假设尚未在浏览器中清除cookie,或者服务器尚未重新启动,或者会话未超时),可以找到会话,这就是'statefulness'属于一个无状态的http请求/响应协议。

我的问题是:

1)当用户登录使用基于表单的身份验证的应用程序时,是否会自动创建会话?

2)如果没有,用户实际注销会发生什么,因为没有会话无效?

更一般地说,我真的想要了解用户HttpSession与用户“登录”之间是否存在连接,就基于表单的身份验证而言。用户是否可以登录而没有会话。

1 个答案:

答案 0 :(得分:0)

这个问题的答案历来依赖于平台。例如,WebSphere不要求对用户进行身份验证的会话,但需要使用WAS特定的servlet调用才能“注销”用户。

当添加HttpServletRequest.logout()时,最终修复了Servlet 3.1规范(Java EE 7)。