我正在制作一个登录控制器。
我将会话设置为:
conn = put_session(conn, :user_id, user.id)
IEx.pry
redirect conn, to: account_path(conn, :show)
当我打印conn时,看起来设置为撬线
...
: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
如何使会话保持不变?
谢谢!
答案 0 :(得分:2)
我不确定,但我认为fetch_session
可能不是从会话中获取值的正确函数。试试
get_session(conn, :user_id)
代替。
答案 1 :(得分:0)
对于可能遇到我遇到的相同问题的人们;确保除非确实需要,否则不要拨打configure_session(drop: true)
。
如果尝试强制执行新的会话(例如,用户刚刚登录)并且您呼叫conn |> configure_session(drop: true) |> clear_session |> put_session(:key, value)
,则您的会话将为空。