我正在为使用 Guardian 处理身份验证的 Web 应用程序开发登录系统。在我的 Guardian 配置中,我有
ttl: {30, :days}
通过调用将用户的令牌存储在 cookie 中:
defp login(conn, user) do
conn
|> Guardian.Plug.sign_in(user)
end
像这样,令牌有效期为 30 天,即使浏览器关闭(cookie 的预期行为)也会保留在那里。但是,用户应该能够选择在登录期间是否被记住。如果没有,则必须在关闭浏览器窗口时从 cookie 中删除令牌。我试过设置
ttl: {0, :days}
它似乎完成了所需的行为。说:
- ttl: {0, :days} 是在浏览器窗口关闭之前对用户进行身份验证的正确方法吗?如果是这样,如何在 Guardian.Plug.sign_in(conn, user) 被调用之前以编程方式更改管道中的 ttl 值?
- Guardian 是否能够根据用户选择将令牌存储在 cookie 或会话存储中?(选定的 cookie 记住我,如果没有,则会话存储)