有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我们可以在春季会话超时之前设置条件吗?

我定义了以下处理用户会话的规则

  • 当用户登录HttpSessionListener的sessioncreate()时,将调用该函数并在数据库中将用户状态设置为online
  • 当用户注销时,将调用HttpSessionListener的sessiondestroy(),并在数据库中将用户状态设置为脱机
  • 当用户关闭浏览器/选项卡时,在浏览器卸载/其他事件上进行AJAX调用以销毁会话
  • 因为我们不能完全依赖浏览器事件,所以也可以在服务器端使用会话超时。在会话超时事件中,首先从服务器向客户端进行验证调用,并确认他/她是否仍然可用。若收到来自客户端的确认,则表示浏览器选项卡仍处于打开状态。因此,我们不会破坏会话

在最后一条规则中,如何拦截spring的会话破坏机制? 如果从客户端收到确认,如何跳过会话销毁

谢谢


共 (1) 个答案

  1. # 1 楼答案

    与其在捕获会话超时事件后从服务器重新激活会话,不如让我建议一种更好的方法

    因为您希望在浏览器打开时保持会话处于活动状态,即使用户没有访问(交互)站点,也可以从页面向服务器发送Ajax ping

    这个答案就是一个例子-https://stackoverflow.com/a/3877867/6352160

    这将解决这两个问题-当用户关闭浏览器选项卡时自动关闭会话。只要选项卡处于打开状态,就保持会话处于活动状态。我仍然建议您保留一个会话变量作为计数器,并允许会话仅在固定的时间限制内打开,以避免不必要的长时间运行会话