【问题标题】:Laravel attempt() method is undefined (JWT)Laravel 的尝试()方法未定义(JWT)
【发布时间】:2020-11-27 21:01:26
【问题描述】:

我正在尝试使用 JWT 对 Laravel 中的用户进行身份验证。在我的身份验证控制器中,我有这个登录方法:

public function login(Request $request)
    {
        $jwt_token = null;

        $input = $request->only("email", "password");

        if (!$jwt_token = auth('users')->attempt($input)) {
            return response()->json([
                'success' => false,
                'message' => 'invalid email or password'
            ]);
        }

        return response()->json([
            'success' => true,
            'token' => $jwt_token,
        ]);
    }

但是尝试方法是“未定义的”。如果我使用也会发生同样的情况

auth('users')->JWTAuth::attempt($input)

对此的任何帮助表示赞赏。

【问题讨论】:

  • 请在以后发布此类问题时提供实际错误。测试时我可以看到错误是"Undefined property: Illuminate\\Auth\\SessionGuard::$JWTAuth" - 所以它抱怨的是一个属性,而不是一个方法。
  • 您使用哪个库进行 JWT 身份验证?
  • 现在可以使用了,但它是 tymon/jwt-auth。
  • @Aejg 我在这里遇到了同样的问题,你是怎么解决的?
  • @LakwinChandula 我四处询问,一致认为 VS 代码(我使用的 IDE)无法识别所有命令(因此红色曲线)并不少见,因为它只对解决这些事情的代码。我的代码运行良好的事实让我相信这很可能是这种情况。

标签: laravel validation authentication


【解决方案1】:

不应该叫auth('users')->JWTAuth::attempt($input);

尝试:auth('users')->attempt($input);

【讨论】:

  • 它仍然给我同样的错误,尝试()是红色下划线,但奇怪的是登录功能工作正常?
  • 当我将鼠标悬停在它上面时,它说:“未定义的方法'尝试'。intelephense(1013)”
  • attempt() 方法仍然有下划线,但实际上工作正常。人们告诉我,这可能是由于 VSCode 的 intelephense 无法识别该方法。
【解决方案2】:

其实你可以这样做

Auth::attempt($request->only('email', 'password'));

【讨论】:

  • 但这并不能解决问题。如果您阅读过其他 cmets,您会看到他在 Vscode 中使用 PHP Intellephense。该插件会生成错误(即使代码有效),到目前为止它仍然存在相同的问题。
猜你喜欢
  • 2021-06-12
  • 2021-06-19
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
相关资源
最近更新 更多