Laravel 的尝试()方法未定义(JWT)
Posted
技术标签:
【中文标题】Laravel 的尝试()方法未定义(JWT)【英文标题】:Laravel attempt() method is undefined (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)无法识别所有命令(因此红色曲线)并不少见,因为它只对解决这些事情的代码。我的代码运行良好的事实让我相信这很可能是这种情况。
【参考方案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。该插件会生成错误(即使代码有效),到目前为止它仍然存在相同的问题。以上是关于Laravel 的尝试()方法未定义(JWT)的主要内容,如果未能解决你的问题,请参考以下文章
Auth 尝试方法在 Laravel/Lumen + JWT + 用户自定义模型中如何工作
Laravel 5.4 Tymon JWT Auth Guard 驱动未定义