如何让 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