尝试通过Postman发布API以验证站点中的用户时遇到错误。
登录功能:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if ($token = $this->guard()->attempt($credentials)) {
return $this->respondWithToken($token);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
保护功能
public function guard()
{
return Auth::guard();
}
邮递员上显示的错误
"message": "Call to undefined method Tymon\\JWTAuth\\Contracts\\Providers\\Auth::guard()",
"exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
如何解决这个问题?
答案 0 :(得分:0)
如果用户插入有效的电子邮件和密码,例如:
,则可以使用\JWTAuth::attempt
函数来获取令牌。
....
use Tymon\JWTAuth\Exceptions\JWTException;
....
try {
$token = \JWTAuth::attempt($request->only('email', 'password'));
return $this->respondWithToken($token);
} catch (JWTException $exception) {
return response()->json([
'status' => false,
'data' => null,
'message' => 'Could not create token'
]);
}
编辑1
您提交的上述答案是正确的。
尝试将Auth::guard()
替换为Auth::guard('api')
public function guard()
{
return Auth::guard('api');
}
答案 1 :(得分:0)
使用类似
的构造方法public function __construct(){
auth()->setDefaultDriver('api');
}
和您的登录功能
public function login(){
$credentials = request(['email', 'password']);
if(!$token = auth()->attempt($credentials)){
return response()->json(['error' => 'Incorrect email/password'], 401);
}
return $this->respondWithToken($token);
}
并注释掉您的警卫功能