java我们可以在春季会话超时之前设置条件吗?
我定义了以下处理用户会话的规则
- 当用户登录HttpSessionListener的sessioncreate()时,将调用该函数并在数据库中将用户状态设置为online李>
- 当用户注销时,将调用HttpSessionListener的sessiondestroy(),并在数据库中将用户状态设置为脱机李>
- 当用户关闭浏览器/选项卡时,在浏览器卸载/其他事件上进行AJAX调用以销毁会话李>
- 因为我们不能完全依赖浏览器事件,所以也可以在服务器端使用会话超时。在会话超时事件中,首先从服务器向客户端进行验证调用,并确认他/她是否仍然可用。若收到来自客户端的确认,则表示浏览器选项卡仍处于打开状态。因此,我们不会破坏会话李>
在最后一条规则中,如何拦截spring的会话破坏机制? 如果从客户端收到确认,如何跳过会话销毁
谢谢
# 1 楼答案
与其在捕获会话超时事件后从服务器重新激活会话,不如让我建议一种更好的方法
因为您希望在浏览器打开时保持会话处于活动状态,即使用户没有访问(交互)站点,也可以从页面向服务器发送Ajax ping
这个答案就是一个例子-https://stackoverflow.com/a/3877867/6352160
这将解决这两个问题-当用户关闭浏览器选项卡时自动关闭会话。只要选项卡处于打开状态,就保持会话处于活动状态。我仍然建议您保留一个会话变量作为计数器,并允许会话仅在固定的时间限制内打开,以避免不必要的长时间运行会话