5

我有一个 Play 2.0.4 网络应用程序,它使用 SecureSocial 允许用户通过 twitter、facebook 和 gmail 等第三方提供商登录。那时,我没有使用自己的 UsernamePasswordProvider;也许我稍后会添加它。

我需要我的用户长时间保持登录状态,可能是一周。就我而言,用户会话仅用于各种便利功能,例如自定义,因此与长期会话相关的风险肯定不如不必每次都登录的便利那么重要。

看起来当前会话存储在一个临时 cookie 中,当用户终止浏览器时该 cookie 就会消失。配置文件中有一个 sessionTimeOut 参数,但它的目的似乎是终止浏览器中长时间保持打开状态的会话。至少,当我关闭并重新打开浏览器时,即使此超时设置为很大,会话也会立即中断。

保持用户长时间登录的推荐方法是什么?

4

3 回答 3

3

来自 master 的最新快照(适用于 Play 2.1)有一个新属性,如果您需要,它可以使身份验证器 cookie 持久化。在您的配置文件中,您可以添加:

securesocial.cookie.makeTransient=false
securesocial.cookie.absoluteTimeoutInMinutes=1440
securesocial.cookie.idleTimeoutInMinutes=1440

这将使 cookie 持久化并使会话持续 24 小时。

于 2013-02-26T19:56:26.030 回答
2

对于 Play 2.2,您需要将 cookie 部分添加到 securesocial.conf 文件,例如:

cookie {
    name=id
    path=/
    httpOnly=true
    idleTimeoutInMinutes=1440
    absoluteTimeoutInMinutes=1440
}
于 2013-12-30T11:11:42.047 回答
2

配置在这里定义和使用: CookieAuthenticator

您可以将鼠标悬停在变量上并查看配置的使用方式。

两个配置:absoluteTimeout 和 idleTimeout 用于不同的目的,这一控制 cookie 何时被视为有效

所以我建议你为 absoluteTimeoutInMinutes 使用比另一个更大的值

于 2015-01-22T03:14:28.523 回答