记住我 凤凰城使用守护者的功能



我正在为使用Guardian处理身份验证的Web应用程序开发登录系统。在我的守护者配置中,我有

ttl: {30, :days}

用户的令牌通过调用以下命令存储在 Cookie 中:

defp login(conn, user) do
  conn
  |> Guardian.Plug.sign_in(user)
end

像这样,令牌的有效期为 30 天,即使浏览器关闭(cookie 的预期行为)也会保留在那里。但是,用户应该能够在登录期间选择是否被记住。否则,必须在关闭浏览器窗口时从 Cookie 中删除令牌。我尝试设置

ttl: {0, :days}

它似乎完成了所需的行为。说:

  1. ttl: {0, :d ays} 是在浏览器窗口关闭之前对用户进行身份验证的正确方法吗? 如果是这样,如何在调用Guardian.Plug.sign_in(conn,user)之前以编程方式更改管道中的ttl值?
  2. Guardian 是否能够根据用户选择将令牌存储在 Cookie 或会话存储中?(选定的 Cookie 记住我,如果没有,会话存储)

也许检查Guardian.Plug.remember_me/4函数。在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 能够同时存储会话和令牌,因此您可能需要根据需要自定义身份验证系统。

相关内容

  • 没有找到相关文章

最新更新