Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cookies 还记得我在凤凰卫士中使用的功能吗_Cookies_Elixir_Phoenix Framework_Remember Me_Guardian - Fatal编程技术网

Cookies 还记得我在凤凰卫士中使用的功能吗

Cookies 还记得我在凤凰卫士中使用的功能吗,cookies,elixir,phoenix-framework,remember-me,guardian,Cookies,Elixir,Phoenix Framework,Remember Me,Guardian,我正在为一个web应用程序开发一个登录系统,使用Guardian来处理身份验证。 在我的监护人配置中,我有 ttl: {30, :days} 通过调用以下命令,用户的令牌存储在Cookie中: defp login(conn, user) do conn |> Guardian.Plug.sign_in(user) end 这样,令牌的有效期为30天,即使浏览器关闭,令牌也会保持在那里(cookie的预期行为)。 然而,用户应该能够选择是否在登录期间被记住。 否则,必须在关闭浏

我正在为一个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或会话存储中?(选定“记住我”的cookies,如果没有,则会话存储)

  • 也许可以检查一下Guardian.Plug。记住我/4。卫报上有一个例子

    更改TTL在这里是非常危险的,因为这意味着登录后您的令牌立即过期,因此如果您基于令牌授权请求,则每个API路由都将无法工作

    Guardian能够同时存储会话和令牌,因此您可能需要根据自己的需要自定义身份验证系统

    # 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)