我正在使用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}
它似乎完成了所需的行为。说:
答案 0 :(得分:1)
也许请查看Guardian.Plug.remember_me/4
function。有一个关于Guardian GitHub的例子。
# Set a "refresh" token directly on a cookie.
# Can be used in conjunction with `Guardian.Plug.VerifyCookie`
conn = MyApp.Guardian.Plug.remember_me(conn, resource)
更改TTL在这里非常危险,因为这意味着您在登录后立即使用过期令牌,因此如果您根据令牌授权请求,每个单个API路由将无效。
Guardian能够存储会话并同时存储令牌,因此您可能需要根据需要自定义身份验证系统。