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

时间:2017-03-09 13:31:46

标签: session elixir phoenix-framework

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

put_session(conn, :user_id, user_id)

但它在很快的一天到期,我想大约一天。我希望它大约2周。如何指定其有效的时间范围?

2 个答案:

答案 0 :(得分:4)

默认情况下,会话cookie没有设置到期日期,这会创建一个存在until the user closes the browsing session的会话cookie。您可以通过将max_age: <integer>传递到plug Plug.Session中的lib/my_app/endpoint.ex来电来设置特定的有效期:

变化:

plug Plug.Session,
  store: :cookie,
  key: "_my_app_key",
  signing_salt: "..."

为:

plug Plug.Session,
  store: :cookie,
  key: "_my_app_key",
  signing_salt: "...",
  max_age: 2 * 7 * 24 * 60 * 60 # number of seconds in 2 weeks

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

$ curl -I localhost:4000 | grep set-cookie
  

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

为:

$ curl -I localhost:4000 | grep set-cookie
  

set-cookie:_my_app_key = SFMyNTY.g3QAAAABbQAAAANmb29GP-M66RqWt64.6PvtX96B9jwgyIhjJBX5AiDV9_96838plEpgGxS9u0Q;路径= /;到期= 2017年3月23日星期四15:06:48 GMT;最大年龄= 1209600;仅Http

答案 1 :(得分:0)

您正在将其置于灵活性有限的会话中。你可以创建一个单独的cookie,作为一种方法来设置它的max_age

put_resp_cookie(conn, :user_id, user_id, max_age: 30 * 24 * 60 * 60)