Elixir Phoenix 中的会话未保存
Session not saving in Elixir Phoenix
我正在制作一个登录控制器。
我这样设置会话:
conn = put_session(conn, :user_id, user.id)
IEx.pry
redirect conn, to: account_path(conn, :show)
当我打印我得到的连接时,它看起来像在撬线上一样设置
...
:plug_session => %{"user_id" => 6}, :plug_session_fetch => :done,
...
然后在我们重定向到的下一个控制器中我们得到
get_session(conn, :user_id) => nil
来自登录控制器的 302 似乎设置了会话 cookie,因为响应包括
set-cookie:_rebirth_key=g3QAAAABbQAAAAd1c2VyX2lkYQY=--KJ9iow5QUIqw1ggyPla--EGp-dY=; path=/; HttpOnly
如何使会话持续存在?
谢谢!
我不确定,但我认为 fetch_session
可能不是从会话中获取值的正确函数。尝试
get_session(conn, :user_id)
相反。
对于可能 运行 遇到与我相同的问题的人;确保你没有打电话给 configure_session(drop: true)
除非你真的想。
如果您在尝试执行新会话(例如用户刚刚登录)时调用 conn |> configure_session(drop: true) |> clear_session |> put_session(:key, value)
,您的会话将为空。
我正在制作一个登录控制器。
我这样设置会话:
conn = put_session(conn, :user_id, user.id)
IEx.pry
redirect conn, to: account_path(conn, :show)
当我打印我得到的连接时,它看起来像在撬线上一样设置
...
:plug_session => %{"user_id" => 6}, :plug_session_fetch => :done,
...
然后在我们重定向到的下一个控制器中我们得到
get_session(conn, :user_id) => nil
来自登录控制器的 302 似乎设置了会话 cookie,因为响应包括
set-cookie:_rebirth_key=g3QAAAABbQAAAAd1c2VyX2lkYQY=--KJ9iow5QUIqw1ggyPla--EGp-dY=; path=/; HttpOnly
如何使会话持续存在?
谢谢!
我不确定,但我认为 fetch_session
可能不是从会话中获取值的正确函数。尝试
get_session(conn, :user_id)
相反。
对于可能 运行 遇到与我相同的问题的人;确保你没有打电话给 configure_session(drop: true)
除非你真的想。
如果您在尝试执行新会话(例如用户刚刚登录)时调用 conn |> configure_session(drop: true) |> clear_session |> put_session(:key, value)
,您的会话将为空。