6

我使用的是 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 甚至在检查现有登录会话之前就被核爆了……</p>

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

4

1 回答 1

4

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

如果您想在重新编译/重新启动后保持用户登录,您可以:

  1. 创建持久化事物的 AuthenticatorStore 的实现。
  2. 更改 ehcache.xml 文件以保留在文件系统中 (diskPersistent="true")。
于 2013-05-23T23:35:36.820 回答