Laravel未定义方法

Laravel未定义方法,laravel,laravel-passport,Laravel,Laravel Passport,我正在测试构建一个应用程序,使用Laravel、Laravel passport和socialite在vue SPA中登录和注销用户。登录和创建用户没有问题,只有当我尝试注销用户时,我才会得到错误:调用undefined方法:revoke 这在Auth\LoginController中: public function logout(Request $request) { $request->user()->token()->revoke(); return r

我正在测试构建一个应用程序,使用Laravel、Laravel passport和socialite在vue SPA中登录和注销用户。登录和创建用户没有问题,只有当我尝试注销用户时,我才会得到错误:调用undefined方法:revoke

这在Auth\LoginController中:

public function logout(Request $request) {
    $request->user()->token()->revoke();
    return response()->json([
        'message'   =>  'Successfully logged out.'
    ]);
}
这在Api.php中:

Route::group(['middleware' => 'auth:api'], function(){
    Route::post('/logout', 'Auth\LoginController@logout');
});
这就是vue SPA中的axios:

logout() {
    axios.post('/api/logout')
    .then(res=>{
        console.log(res.data);
    });
}
如果撤销有效,我将收到成功注销的消息。这里的任何帮助都是感激的

另外:在我的LoginController handleProviderCallback函数中,我有一个

    auth()->login($user);
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    $token->expires_at = Carbon::now()->addWeeks(1);
    $token->save();

    return response()->json([
        'access_token'  =>  $tokenResult->accessToken,
        'token_type'    =>  'Bearer',
        'expires_at'    =>  Carbon::parse($tokenResult->token->expires_at)->toDateTimeString()
    ]);
结果是,当用户单击社交登录时,它会显示访问令牌。我一直认为来自cookies的laravel_令牌是laravel自动处理的JWT。现在我不是很确定。因此,如果有了这段额外的代码,访问令牌是处理JWT的正确方法,那么如何将响应传递到Vue中,因为它是来自socialite的重定向,而不是Axios请求


测试JWT后,我可以再次尝试注销,看看JWT是否存在问题。

您确定用户有令牌吗?您是否在您的用户模型中使用了HasApiTokens特性?

您确定用户有令牌吗?您是否在用户模型中使用了HasApiTokens特性?

我已经用默认的Auth::logout()解决了这个问题。不需要“个人访问令牌”的代码。在passport的文档中,Laravel在一个名为Laravel_令牌的cookie中附加了一个JWT,passport将检查用户是否经过身份验证。

我已经用默认的Auth::logout()解决了这个问题。不需要“个人访问令牌”的代码。在passport的文档中,Laravel在名为Laravel_令牌的cookie中附加了一个JWT,passport将检查用户是否经过身份验证。

尝试使用->销毁();使用->destroy()尝试使用未定义的方法destroy,而不是revoke.output;不是revoke.Output,而是相同的未定义方法Destroyes用户模型有“HasApiTokens”,数据库有我登录时颁发的个人访问令牌用户模型有“HasApiTokens”,数据库有我登录时颁发的个人访问令牌