2

我们在应用程序中使用 Grails Spring Security 来执行用户身份验证。如果用户登录到我们的应用程序,rememberMe cookie 将被保存。这意味着,用户将在浏览器会话之间保持登录状态。

如何查看当前在线的用户?我读到您可以使用SessionRegistryImplor从 Session 中检索此信息,HttpSessionListener但我不知道如何实现它。我找到了这篇文章,但我不确定如何将其转换为 Grails:使用 Spring Security 的在线用户

任何想法?

4

1 回答 1

0

我构建了一个依赖在线用户的约会应用程序。我创建了一个跟踪在线用户的 Grails 服务。您所要做的就是创建一个保持并发哈希映射的服务,该服务是单例的,因此整个 Web 应用程序只有一个实例。当您的用户第一次登录时,您会在哈希图中设置用户 ID 和未来时间。例如:

键 = 用户 ID 值 = 现在 + 30 分钟

因此,当用户登录时,您将他的登录时间增加 30 分钟并插入哈希映射中。对于用户发送的每个请求,您通过使用他的用户 ID 查找他的到期时间来更新哈希映射的值。所以现在如果用户关闭浏览器,他不会更新过期时间,他的在线状态将是无效的。您可以有一个每 30 分钟运行一次的作业,并删除那些过期日期小于 NOW 的密钥。或者,如果您想计算在线用户,只需遍历地图并计算其到期日期大于 NOW 的条目。

它是内存中的哈希映射,非常容易访问和操作,而且速度很快。这对我很有用,而且因为我使用的是并发哈希映射,所以更新和读取是安全的。希望这可以帮助你得到你想要的。对不起,我的回答迟了,但我刚看到这个问题:)

于 2014-02-26T19:18:31.093 回答