Laravel 为什么Auth::check()在注销后返回true?护照

Laravel 为什么Auth::check()在注销后返回true?护照,laravel,laravel-passport,Laravel,Laravel Passport,所以我使用passport进行身份验证,在我注销用户之前,一切正常。我的路径通过auth:apiguard进行保护,因此在注销后我无法访问任何函数,但是我的前端通过基于auth:check()值的react呈现,并且在注销后保持为真。因此,我能够进入管理仪表板没有任何权限,这是一个错误,我无法找到解决方案来修复它 这是我的注销功能: public函数注销() { if(Auth::check()){ DB::table('oauth\u访问\u令牌') ->其中('user_id',Auth::

所以我使用passport进行身份验证,在我注销用户之前,一切正常。我的路径通过
auth:api
guard进行保护,因此在注销后我无法访问任何函数,但是我的前端通过基于auth:check()值的react呈现,并且在注销后保持为真。因此,我能够进入管理仪表板没有任何权限,这是一个错误,我无法找到解决方案来修复它

这是我的注销功能:

public函数注销()
{
if(Auth::check()){
DB::table('oauth\u访问\u令牌')
->其中('user_id',Auth::user()->id)
->更新([
“已撤销”=>true
]);
返回响应(['check'=>Auth::check()]);//我在注销后得到true
}
返回响应(['check'=>Auth::check()]);
}
这是我的登录和注册功能:

公共功能寄存器(请求$Request){
$validatedData=$request->validate([
“名称”=>“必需”|最大值:55 |唯一值:用户”,
'密码'=>'必需'
]);
$validatedData['password']=bcrypt($request->password);
$user=user::create($validatedData);
$accessToken=$user->createToken('authToken')->accessToken;
返回响应()
}
公共功能登录(请求$Request)
{
$loginData=$request->validate([
“名称”=>“必需”,
'密码'=>'必需'
]);
$a=auth()->尝试($loginda,true);
如果(!$a){
返回响应(['message'=>'Invalid credentials');
}
$accessToken=auth()->user()->createToken('authToken')->accessToken;
返回响应()->json($accessToken);
}

我错过了什么?

Auth::check()返回true的原因是用户已在Auth服务上设置。您只是撤销访问令牌,这意味着用户将从下一个请求中注销

你可以用两种方法中的一种来解决这个问题

1) 假设对
注销
路由的任何调用都将导致用户注销,而不管执行的逻辑如何。例如,您可以进行调用,然后清除前端中的访问令牌(或执行任何其他注销逻辑)


2) 您可以在代码中调用
Auth::logout()
,这会将身份验证服务上的当前用户设置为
null
,从而产生
Auth::check()
返回
false

第二个选项对我不起作用,我发现一个错误
error:Method-illumb\Auth\RequestGuard::logout不存在。
我想我必须验证令牌或其他东西,而不是
Auth::check();
您只需使用第一个选项,就可以了。