【问题标题】:** (UndefinedFunctionError) function Guardian.Plug.authenticated?/1 is undefined or private** (UndefinedFunctionError) 函数 Guardian.Plug.authenticated?/1 未定义或私有
【发布时间】:2019-04-12 23:03:14
【问题描述】:

我对@9​​87654321@ 和Phoenix 非常陌生,我正在尝试使用{:comeonin, "~> 4.0"}{:guardian, "~> 1.0"} 对我的应用程序进行身份验证,并有一个帮助函数来检查用户是否已登录:

defmodule Chatter.ViewHelper do
  def current_user(conn), do: Guardian.Plug.current_resource(conn)
  def logged_in?(conn) do
    Guardian.Plug.authenticated?(conn)
  end
end

但我收到此错误:

** (UndefinedFunctionError) function Guardian.Plug.authenticated?/1 is undefined or private.

【问题讨论】:

    标签: elixir phoenix-framework guardian


    【解决方案1】:

    Guardian 文档在升级到 v1.0 后没有正确引用一些 API 调用。您需要从自定义的 MyApp.Guardian 实现而不是实际的 Guardian 模块中调用这些函数。

    假设你followed the guide实现MyApp.Guardian,你需要调用:

    MyApp.Guardian.Plug.authenticated?(conn)
    

    【讨论】:

    • 感谢您的帮助,找到了解决方案:)
    【解决方案2】:

    错误表明您正在尝试调用不带参数的函数:

    (UndefinedFunctionError) function Guardian.Plug.authenticated?/0
    

    /0 这里的意思是没有参数。

    【讨论】:

    • 我这样调用 def logged_in?(conn) do Guardian.Plug.authenticated?(conn) end
    • 更新问题
    猜你喜欢
    • 2021-08-28
    • 2016-12-09
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多