升级到SecureSocial 2.0.12,现在会话不会被持久化

时间:2013-05-18 14:24:57

标签: playframework-2.0 securesocial

我使用的是SecureSocial 2.0.7,我实现了UserServicePlugin,用户可以登录。我可以停止并重新启动服务器(或重新编译或其他),用户将保持登录状态。

自升级到2.0.12以来,登录会话在服务器重新启动时不会持久。

我已将调试日志记录添加到UserServicePlugin中的每个方法。用户登录时为saved。但是,当服务器重新启动,并且我尝试以先前登录的用户身份访问页面时,我只会在日志中看到:

[info] play - database [default] connected at jdbc:postgresql://localhost/xxxxxx
[info] application - [securesocial] loaded templates plugin: sec.SecureSocialViews
[info] play - Starting application default Akka system.
[info] application - [securesocial] loaded user service: class sec.LoginUserService
[info] application - [securesocial] loaded password hasher bcrypt
[info] application - [securesocial] loaded identity provider: userpass
[info] play - Application started (Dev)
[debug] application - [securesocial] calling deleteExpiredTokens()
[debug] application - deleteExpiredTokens
[debug] application - [securesocial] anonymous user trying to access : '/supplier/requests'

有什么想法吗?我想知道是否由于某种原因登录cookie在检查现有登录会话之前就已经开始了...

我正在使用用户名/密码验证。

1 个答案:

答案 0 :(得分:4)

用户信息在会话中的存储方式发生了变化。模块现在使用单独的一个而不是使用Play会话cookie。此cookie具有身份验证者ID。用户信息现在存储在服务器端的AuthenticatorStore实现中。默认实现使用Play缓存,这就是您需要在重新编译时再次进行身份验证的原因。正在清除缓存中的数据。

如果您希望在重新编译/重新启动后让用户保持登录状态,您可以:

  1. 创建一个持久化的AuthenticatorStore实现。
  2. 将ehcache.xml文件更改为在文件系统中保留(diskPersistent =“true”)。