Authentication 如何使用Grails中的Spring Security检查用户在线状态?

Authentication 如何使用Grails中的Spring Security检查用户在线状态?,authentication,grails,spring-security,grails-2.0,Authentication,Grails,Spring Security,Grails 2.0,我们在应用程序中使用GrailsSpring安全性来执行用户身份验证。如果用户登录到我们的应用程序,将保存Memberme cookie。这意味着,用户将在浏览器会话之间保持登录状态 如何检查哪些用户当前在线?我听说您可以使用sessionregisterympl或HttpSessionListener从会话中检索此信息,但我不知道如何实现。我找到了这篇文章,但我不确定如何将其转换为Grails: 有什么想法吗?我开发了一个依赖在线用户的约会应用程序。我创建了一个Grails服务来跟踪在线用户。

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

如何检查哪些用户当前在线?我听说您可以使用
sessionregisterympl
HttpSessionListener
从会话中检索此信息,但我不知道如何实现。我找到了这篇文章,但我不确定如何将其转换为Grails:


有什么想法吗?

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

Key=UserID 值=现在+30分钟

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


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

grails安装模板将为您提供web.xml以供编辑。这正是他们正在做的。@JamesKleeh我设法让它在这篇文章中工作。问题是当用户登录并关闭浏览器时。会议仍然开放。那么在这种情况下该怎么办呢?