Elixir Guardian.Plug.current_资源为零
我正在使用Guardian和Ueberauth进行身份验证,但发生了一些奇怪的事情Elixir Guardian.Plug.current_资源为零,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在使用Guardian和Ueberauth进行身份验证,但发生了一些奇怪的事情Guardian.Plug.authenticated?(conn)返回true但Guardian.Plut.current\u资源(conn)返回false。我还使用了Guardian.Phoenix.Controller和当前用户为nil,但是Guardian.Plug.EnsureAuthenticated允许我访问。发生这种情况是因为我在Guardian配置中缺少hooks:GuardianDb 您可以发布
Guardian.Plug.authenticated?(conn)
返回true
但Guardian.Plut.current\u资源(conn)
返回false
。我还使用了Guardian.Phoenix.Controller
和当前用户为nil
,但是Guardian.Plug.EnsureAuthenticated
允许我访问。发生这种情况是因为我在Guardian配置中缺少hooks:GuardianDb
您可以发布SessionController(或任何控制器调用的Guardian.Plug.sign_in
)的源代码吗?当然可以。这不是我的项目,但我当前的auth_控制器完全相同。在快速浏览了Guardian的源代码之后,我认为当前资源
可以返回false
的唯一方法是将false
作为“对象”(第二个参数)传递给登录
。您能检查传递给登录的值吗?
?我刚刚确认,这种行为只有在我重置数据库后才会发生。当我登录或注销时,一切都正常。我仍然不明白为什么当前用户在mix-exto.reset
之后为nil
时浏览器可以访问受限路径。我也有同样的问题。我希望您能解释一下为什么需要hooks:GuardianDb
以及如何配置它。