最近尝试了一下最新的Laravel(6.4)。正在尝试实现基于 API 的简单登录功能。没有使用 Passport 或 Tymon 的 JWT 等任何软件包。我使用了非常基本的身份验证(只需在用户表中保留一列命名为“api_token”)。但出现错误说
Symfony\Component\Debug\Exception\FatalThrowableError : Call to undefined method Illuminate\Auth\TokenGuard::attempt()
这是我的 Controller
//only method in the controller, so used `__invoke` method.
public function __invoke(Request $request)
{
$request->validate([
'email' => 'required',
'password' => 'required',
]);
$credentials = $request->only(['email', 'password']);
$credentials['active'] = 1;
if (Auth::guard('api')->attempt($credentials)) {
return response()->json([
'data' => 'Wrong credential given'
]);
}
return response()->json([
'data' => \auth()->user()
]);
}
这是我的 config/auth.php
文件状态。我正在使用 api 防护进行访问。但 token 应该在登录后出现。在这里,我无法登录。
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
]
最佳答案
API Guard 没有尝试
方法,也没有任何其他形式的用户登录。它所做的只是保护路线。要对用户进行身份验证,您仍应使用默认防护。
关于php - Auth::attempt() 在 Laravel 6.4 中抛出错误 "Call to undefined method Illuminate\Auth\TokenGuard::attempt()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630073/