我正在尝试我的第一个玩具应用程序,并使用了#34; Programming Phoenix"创建身份验证。这是我在session_controller中创建的方法(用于登录):
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文档,但没有成功。
谢谢!
答案 0 :(得分:1)
您想要的是会话cookie在关闭浏览器时存在吗?在这种情况下,您可以使用engpoint.ex中的max_age参数设置生命周期。
LIB / MYAPP / endpoint.ex:
plug Plug.Session,
store: :cookie,
key: "xxxxxx",
.
.
max_age: 86400
答案 1 :(得分:0)
我没有找到延长会话时间的方法。我可以试着指出一个可能的解决方案。一旦浏览器关闭,会话结束,但通过“Phoenix.Token”和Cookies,您仍然应该在重新打开网站时登录。检查此问题的答案:Implementing remember-me in phoenix
希望这是解决问题的另一种方法。