Jun*_*idi 1 session elixir phoenix-framework
我用它来为用户创建一个会话:
put_session(conn, :user_id, user_id)
Run Code Online (Sandbox Code Playgroud)
但它很快就会过期,我想大约在一天内。我希望它在 2 周左右。如何指定有效的时间范围?
默认情况下,会话 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