Сессия не сохраняется в 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
Как мне сохранить сеанс?
Спасибо!
2 ответа
Я не уверен но думаю fetch_session
может не подходить для получения значения из сеанса. Пытаться
get_session(conn, :user_id)
вместо.
Людям, которые могут столкнуться с той же проблемой, что и я; убедитесь, что вы не звоните configure_session(drop: true)
если вы действительно не хотите.
Если в попытке принудительно установить новый сеанс (например, если пользователь только что вошел в систему), и вы вызываете conn |> configure_session(drop: true) |> clear_session |> put_session(:key, value)
Ваша сессия будет пустой.