Сессия не сохраняется в 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)Ваша сессия будет пустой.

Другие вопросы по тегам