Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户在其他地方登录时,如何注销用户_Java - Fatal编程技术网

Java 当用户在其他地方登录时,如何注销用户

Java 当用户在其他地方登录时,如何注销用户,java,Java,我正在尝试实现这样一种功能,当用户在某个地方登录时,当他尝试登录到其他地方时,他应该自动从上一个地方登录 就像GMAIL一样 如果有人能告诉我这个概念,我想我需要把用户loggedinstatus保存在数据库中,因为会话看起来不是很简单。但是我不明白我们如何在数据库中更新用户状态,如果在5分钟内没有活动(我将如何在数据库中捕获不活动和更新) 如果有人能给我指点一下,我已经为此奋斗了好几个小时了 感谢用户登录时将id为的用户会话添加到hashmap。当同一用户再次登录时,请检查HashMap中的条

我正在尝试实现这样一种功能,当用户在某个地方登录时,当他尝试登录到其他地方时,他应该自动从上一个地方登录

就像GMAIL一样

如果有人能告诉我这个概念,我想我需要把用户loggedinstatus保存在数据库中,因为会话看起来不是很简单。但是我不明白我们如何在数据库中更新用户状态,如果在5分钟内没有活动(我将如何在数据库中捕获不活动和更新)

如果有人能给我指点一下,我已经为此奋斗了好几个小时了


感谢用户登录时将id为的用户会话添加到hashmap。当同一用户再次登录时,请检查HashMap中的条目,如果可用,请使会话无效并为用户创建新会话。

如果您使用的是Spring Security,它会提供现成的功能。 否则:

创建
java.util.Map
(首选ConcurrentMap,因此并发操作它不会损坏它),并将其存储在应用程序范围(ServletContext)中

现在,您应该在映射中存储每个用户及其登录时对其会话的引用,如果用户再次登录,只需获取上一个会话对象并使其无效

现在实现
javax.servlet.http.HttpSessionListener
的一个实例,并在
void sessionDestroyed中(javax.servlet.http.HttpSessionEvent-HttpSessionEvent)web.xml
中注册这个监听器,一切都完成了

p、 我知道,如果您将应用程序部署在一个web容器集群上,这会有多困难,但当您只有一台服务器时,这没关系。 p、 我不建议将会话信息存储在数据库中