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?
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?
SecureSocial 使用 AuthenticatorStore 插件跟踪经过身份验证的用户。默认实现使用 Play 缓存,但您可以创建自己的缓存。如果您创建自己的实现,那么您可以决定将会话保存在哪里,然后查询它以找出您需要的内容。
另一种方法可能是编写一个 EventListener。SecureSocial 触发登录和注销事件。您可以保留这些事件,这也将为您提供活跃用户。但是,如果用户只是关闭浏览器,您可以在这种情况下释放注销事件。我会说依赖 AuthenticatorStore 更可靠,因为 Authenticator 有一个过期时间,您可以在运行查询时检查它。
你在使用 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
方法。
因此,如果您控制用户连接到您的站点的方式,您就可以存储(和检索)连接的用户。