1

Is there a way to know which users are currently signed in with a Playframework application using the Secure Social API? If so how?

More generally where and how are currently signed-in users stored in a Play/SecureSocial application?

4

2 回答 2

3

SecureSocial 使用 AuthenticatorStore 插件跟踪经过身份验证的用户。默认实现使用 Play 缓存,但您可以创建自己的缓存。如果您创建自己的实现,那么您可以决定将会话保存在哪里,然后查询它以找出您需要的内容。

另一种方法可能是编写一个 EventListener。SecureSocial 触发登录和注销事件。您可以保留这些事件,这也将为您提供活跃用户。但是,如果用户只是关闭浏览器,您可以在这种情况下释放注销事件。我会说依赖 AuthenticatorStore 更可靠,因为 Authenticator 有一个过期时间,您可以在运行查询时检查它。

于 2014-01-27T15:54:57.620 回答
1

你在使用 Play Framework 2 吗?

如果是这样,您可以创建自己的UserService,如文档中所述: http: //securesocial.ws/guide/user-service.html

然后,您可以实现find(Identity)(在 Scala 中)或doFind(Identity)(在 Java 中)方法并选择如何记录和存储用户。

事实上,在这些方法中,您必须根据用户连接的方式(Twitter、Facebook ...)登录用户。

然后,您还必须实现save(Identity)(在 Scala 中)或doSave(Identity)方法,以便在用户首次使用特定社交网络创建帐户或日志时存储用户。

如果您提供使用用户名//密码登录的方法,则必须实现findByEmailAndProvider(在 Scala 中)或doFindByEmailAndProvider方法。

因此,如果您控制用户连接到您的站点的方式,您就可以存储(和检索)连接的用户。

于 2014-01-24T15:35:02.313 回答