2016-01-10 5 views
1

Я пробовал свое первое приложение для игрушек и использовал шаги в «Программирование Phoenix» для создания аутентификации. Это метод создания в моем session_controller (используется для зарегистрировались):Как сделать put_session дольше?

def create(conn, %{"user" => user_params}) do 
    changeset = User.registration_changeset(%User{}, user_params) 
    case Repo.insert(changeset) do 
    {:ok, user} -> 
     conn 
     |> Myapp.Auth.login(user) 
     |> put_flash(:info, "User created!") 
     |> redirect(to: user_path(conn, :index)) 
    ... 
end 

И мой метод Логин:

def login(conn, user) do 
    conn 
    |> assign(:current_user, user) 
    |> put_session(:user_id, user.id) 
    |> configure_session(renew: true) 
end 

Все работает отлично, за исключением того, что мне нужно войти в систему каждый раз, что я закрываю мой браузер , Есть способ расширить put_sesssion/assign? Я искал разные варианты аутентификации, вопросы и документацию Elixir/Phoenix, но безуспешно.

Спасибо!

ответ

1

Что вы хотите, чтобы файл cookie сеанса существовал до закрытия браузера? В этом случае вы можете установить время жизни с параметром max_age в вашем engpoint.ex.

Библиотека/Myapp/endpoint.ex:

plug Plug.Session, 
    store: :cookie, 
    key: "xxxxxx", 
     . 
     . 
    max_age: 86400 
+0

Спасибо! Он работал точно так, как я искал. – WeekendWorld

0

Мне не повезло найти способ продлить время сеанса. Я могу попытаться указать вам на возможное решение. После закрытия браузера сеансы завершаются, но через «Phoenix.Token» и Cookies вы все равно должны войти в систему при повторном открытии веб-сайта. Проверьте ответ на этот вопрос: Implementing remember-me in phoenix

Надеемся, это альтернативное решение вашей проблемы.

+0

Спасибо, этот подход выглядит так же используется в книге «Programmnig Феникс», я дам ему попробовать как можно скорее. – WeekendWorld

Смежные вопросы