如何让 put_session 持续更长时间?
How to make put_session last longer?
我正在尝试我的第一个玩具应用程序,并使用 "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 文档中搜索了不同的身份验证实现、问题,但没有成功。
谢谢!
我没有找到延长会话时间的方法。我可以尝试为您指出一个可能的解决方案。一旦浏览器关闭,会话就结束了,但是通过 "Phoenix.Token" 和 Cookie,当您 re-open 网站时,您应该仍然登录。检查这个问题的答案:
希望这是您问题的替代解决方案。
你想要的是会话cookie在关闭浏览器后仍然存在?在这种情况下,您可以在 engpoint.ex.
中使用 max_age 参数设置生命周期
lib/Myapp/endpoint.ex:
plug Plug.Session,
store: :cookie,
key: "xxxxxx",
.
.
max_age: 86400
我正在尝试我的第一个玩具应用程序,并使用 "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 文档中搜索了不同的身份验证实现、问题,但没有成功。
谢谢!
我没有找到延长会话时间的方法。我可以尝试为您指出一个可能的解决方案。一旦浏览器关闭,会话就结束了,但是通过 "Phoenix.Token" 和 Cookie,当您 re-open 网站时,您应该仍然登录。检查这个问题的答案:
希望这是您问题的替代解决方案。
你想要的是会话cookie在关闭浏览器后仍然存在?在这种情况下,您可以在 engpoint.ex.
中使用 max_age 参数设置生命周期lib/Myapp/endpoint.ex:
plug Plug.Session,
store: :cookie,
key: "xxxxxx",
.
.
max_age: 86400