如何使会话持续更长时间?

Jun*_*idi 1 session elixir phoenix-framework

我用它来为用户创建一个会话:

put_session(conn, :user_id, user_id)
Run Code Online (Sandbox Code Playgroud)

但它很快就会过期,我想大约在一天内。我希望它在 2 周左右。如何指定有效的时间范围?

Dog*_*ert 6

默认情况下,会话 cookie 没有设置到期日期,这会创建一个会话 cookie,该 cookie一直存在,直到用户关闭浏览会话。您可以通过传递max_age: <integer>plug Plug.Session调用来设置特定的持续时间lib/my_app/endpoint.ex

改变:

plug Plug.Session,
  store: :cookie,
  key: "_my_app_key",
  signing_salt: "..."
Run Code Online (Sandbox Code Playgroud)

到:

plug Plug.Session,
  store: :cookie,
  key: "_my_app_key",
  signing_salt: "...",
  max_age: 2 * 7 * 24 * 60 * 60 # number of seconds in 2 weeks
Run Code Online (Sandbox Code Playgroud)

您可以通过检查set-cookie应用程序的标头来验证这一点。他们将从:

$ curl -I localhost:4000 | grep set-cookie
Run Code Online (Sandbox Code Playgroud)

设置cookie:_my_app_key=SFMyNTY.g3QAAAABbQAAAANmb29GP-MM4khcFDg.V3iUo5xw9HqgCmvRLBvhRguMixOlzZH_pqxRIYVAwdQ;路径=/;仅Http

到:

$ curl -I localhost:4000 | grep set-cookie
Run Code Online (Sandbox Code Playgroud)

设置cookie:_my_app_key=SFMyNTY.g3QAAAABbQAAAANmb29GP-M66RqWt64.6PvtX96B9jwgyIhjJBX5AiDV9_96838plEpgGxS9u0Q;路径=/;到期=格林威治标准时间 2017 年 3 月 23 日星期四 15:06:48;最大年龄=1209600;仅Http