会话没有在Elixir Phoenix中保存

时间:2016-03-22 16:40:09

标签: elixir phoenix-framework

我正在制作一个登录控制器。

我将会话设置为:

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

如何使会话保持不变?

谢谢!

2 个答案:

答案 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),则您的会话将为空。