我用它来为用户创建一个会话:
put_session(conn, :user_id, user_id)
但它在很快的一天到期,我想大约一天。我希望它大约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)