我正在使用Laravel 6.7 with Passport使用我自己的API。当我尝试使用Auth::logout()
注销用户时,出现以下错误:
Illuminate \ Auth \ RequestGuard :: logout不存在。
我不明白为什么会出现这种行为。我没有使用过任何海关守卫。根据Passport设置,我的Auth.php如下:
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
这是注销代码所在的我的AuthenticationController.php:
/**
* --------------------------------------------------
* Removes the identity of a users login session.
* --------------------------------------------------
* @param Request $request
* @return MessageResource
* --------------------------------------------------
*/
public function logout(Request $request): MessageResource
{
if (Auth::check()) {
Auth::user()->token()->revoke();
}
return new MessageResource(['message' => 'Logout request is successful.']);
}
有什么方法可以解决这个问题?任何见解将不胜感激。预先感谢。
[Auth::logout()
代表web guard
。在这里,您使用的是API保护,因此删除授权令牌后,它将自动从您的应用程序中注销。
public function logout(Request $request)
{
$request->user()->token()->revoke();
//$request->user()->token()->delete(); for delete.
//Auth::user()->token()->revoke(); same way as revoke user token
return response()->json([
'message' => 'Successfully logged out'
]);
}
尝试一下
public function logout(Request $request)
{
$request->user()->token()->revoke();
return response()->json([
'message' => 'Successfully logged out'
]);
}