Java 在窗口关闭时销毁存储在数据库中的用户会话

Java 在窗口关闭时销毁存储在数据库中的用户会话,java,database,session,web-applications,Java,Database,Session,Web Applications,在JAVA web应用程序中,我们在数据库表中维护用户会话活动会话。我们不允许每个用户有多个会话。这意味着,如果您已经使用特定的用户帐户登录,则无法使用相同的帐户打开新会话。如果有人这样做,我们会显示错误“用户已经有一个活动会话”。当用户单击注销时,从表活动会话中删除他的条目。但如果用户关闭窗口而不注销,则其条目将保留在表活动会话中。因此,将来任何登录的尝试都会导致错误“用户已经有一个活动会话”。关于如何在数据库中销毁用户会话的任何提示,以防用户在未注销的情况下关闭浏览器窗口 编辑:阅读所有帖子

在JAVA web应用程序中,我们在数据库表中维护用户会话
活动会话
。我们不允许每个用户有多个会话。这意味着,如果您已经使用特定的用户帐户登录,则无法使用相同的帐户打开新会话。如果有人这样做,我们会显示错误“用户已经有一个活动会话”。当用户单击
注销
时,从表
活动会话
中删除他的条目。但如果用户关闭窗口而不注销,则其条目将保留在表
活动会话中。因此,将来任何登录的尝试都会导致错误“用户已经有一个活动会话”。关于如何在数据库中销毁用户会话的任何提示,以防用户在未注销的情况下关闭浏览器窗口

编辑:阅读所有帖子后,似乎没有明确的方法来限制每个用户的单个会话。

使用“”JavaScript事件,该事件可以执行对服务器的AJAX调用来删除条目。但是,每次卸载页面时都会执行此事件,因此如果您没有SPA,则需要忽略href等的事件

但是,同意Almas的观点,你的方法是危险的,因为不可能100%执行。例如,如果用户终止浏览器进程,则即使此JS事件也不会发布。 此外,用户可以简单地使用另一个浏览器绕过您的“保护”。

使用“”JavaScript事件,该事件可以对服务器执行AJAX调用以删除条目。但是,每次卸载页面时都会执行此事件,因此如果您没有SPA,则需要忽略href等的事件

但是,同意Almas的观点,你的方法是危险的,因为不可能100%执行。例如,如果用户终止浏览器进程,则即使此JS事件也不会发布。 此外,用户可以简单地使用另一个浏览器绕过您的“保护”。

使用“”JavaScript事件,该事件可以对服务器执行AJAX调用以删除条目。但是,每次卸载页面时都会执行此事件,因此如果您没有SPA,则需要忽略href等的事件

但是,同意Almas的观点,你的方法是危险的,因为不可能100%执行。例如,如果用户终止浏览器进程,则即使此JS事件也不会发布。 此外,用户可以简单地使用另一个浏览器绕过您的“保护”。

使用“”JavaScript事件,该事件可以对服务器执行AJAX调用以删除条目。但是,每次卸载页面时都会执行此事件,因此如果您没有SPA,则需要忽略href等的事件

但是,同意Almas的观点,你的方法是危险的,因为不可能100%执行。例如,如果用户终止浏览器进程,则即使此JS事件也不会发布。
此外,用户可以简单地使用另一个浏览器绕过您的“保护”。

在服务器端用户中,HTTP会话通常在一定的空闲时间后失效。您可以在web.xml中实现并注册它,以接收有关会话创建/销毁等的通知。在侦听器实现中,您可以删除会话销毁事件的表项。

在服务器端用户中,HTTP会话通常在一定的空闲时间后失效。您可以在web.xml中实现并注册它,以接收有关会话创建/销毁等的通知。在侦听器实现中,您可以删除会话销毁事件的表项。

在服务器端用户中,HTTP会话通常在一定的空闲时间后失效。您可以在web.xml中实现并注册它,以接收有关会话创建/销毁等的通知。在侦听器实现中,您可以删除会话销毁事件的表项。

在服务器端用户中,HTTP会话通常在一定的空闲时间后失效。您可以在web.xml中实现并注册它,以接收有关会话创建/销毁等的通知。在侦听器实现中,您可以删除会话销毁事件的表项。

HTTP的基本功能是它是请求/响应协议。 i、 e.只有向服务器发出请求,才能更改/访问内容。这种“限制”使您的需求变得有趣。有两种解决方法:-

  • 通过AJAX调用以重复的间隔轮询服务器。只要您的应用程序一直获得轮询AJAX请求,您就可以假定窗口是打开的

  • 在浏览器关闭时,使用javascript(window.onunload)触发事件以销毁用户会话


  • HTTP的基本功能是它是请求/响应协议。 i、 e.只有向服务器发出请求,才能更改/访问内容。这种“限制”使您的需求变得有趣。有两种解决方法:-

  • 通过AJAX调用以重复的间隔轮询服务器。只要您的应用程序一直获得轮询AJAX请求,您就可以假定窗口是打开的

  • 在浏览器关闭时,使用javascript(window.onunload)触发事件以销毁用户会话


  • HTTP的基本功能是它是请求/响应协议。 i、 e.只有向服务器发出请求,才能更改/访问内容。这种“限制”使您的需求变得有趣。有两种解决方法:-

  • 通过AJAX调用以重复的间隔轮询服务器。只要您的应用程序一直获得轮询AJAX请求,您就可以假定窗口是打开的

  • 在浏览器关闭时,使用javascript(window.onunload)触发事件以销毁用户会话

    <