java如何基于使用Spring/AJAX的另一种方法在Spring中使会话无效
因此,场景是:用户A使用凭据X登录并在系统中工作。用户B也是A的朋友,希望使用相同的凭据登录。根据要求,我们将显示一个警报,表示某些用户已使用相同的id登录,您希望通过终止该会话继续
如果用户B同意,我们需要将用户A踢出系统。现在,我想实现的是,一旦调用killSession()方法(在Spring Controller中),我必须向用户a的浏览器客户端发送推送通知,并将其从系统中注销
我不想通过设置超时来实现这一点。我想从服务器触发它,所以它不会创建很多HTTP请求来知道他的会话是否处于活动状态
你们能帮我用什么样的框架或库来实现这一点吗。我对此有点陌生,我所做的只是尝试了SockJS和Socket。但是没有任何成功,因为我不了解如何做到这一点。谢谢你们的帮助
# 1 楼答案
在用户对象中取一个额外的字段,例如
isLoggedIn
作为boolean
字段,并将其设置为true,直到用户登录。一旦用户注销,将其设置为false。对于会话到期时间也需要这样做。一旦会话过期,应使用触发器或通过存储过程调用自动将此字段设置为false。 然后,在登录控制器中,您可以简单地添加一点逻辑,它将检查是否有与用户a的会话,为用户B提问,然后完成您的工作。 希望有帮助# 2 楼答案
我们也面临类似的问题,为了解决这个问题,我们将tomcat会话存储在redis中。 tomcat中需要的配置 上下文xml
在您的代码中,您可以删除会话,如下所示:
其中cacheService只是Redis模板。之后,你可以使用faye推送消息
其中172.16.213.158:81是节点服务器