Laravel 未定义的方法撤销
Laravel undefined method revoke
我正在测试构建一个应用程序,使用 Laravel、Laravel 护照和社交名流在 vue SPA 中登录和注销用户。登录和创建用户没问题,只有当我尝试注销用户时才会出现错误:调用未定义的方法: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()
]);
结果是当用户点击社交登录时,它会显示访问令牌。我一直认为来自 cookie 的 laravel_token 是 Laravel 自动处理的 JWT。现在我不太确定。因此,如果使用此附加代码,访问令牌是处理 JWT 的正确方式,我该如何将响应传递到 Vue,因为它是来自社交名流的重定向,而不是 Axios 请求?
测试 JWT 后,我可以再次尝试注销以查看是否是 JWT 问题。
您确定用户有令牌吗?您是否在用户模型中使用 HasApiTokens
特征?
我已经用默认的 Auth::logout() 解决了这个问题。不需要 'Personal Access Token' 的代码。在护照的文档中 Laravel 在名为 laravel_token 的 cookie 中附加了一个 JWT,该护照将检查用户是否已通过身份验证。
我正在测试构建一个应用程序,使用 Laravel、Laravel 护照和社交名流在 vue SPA 中登录和注销用户。登录和创建用户没问题,只有当我尝试注销用户时才会出现错误:调用未定义的方法: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()
]);
结果是当用户点击社交登录时,它会显示访问令牌。我一直认为来自 cookie 的 laravel_token 是 Laravel 自动处理的 JWT。现在我不太确定。因此,如果使用此附加代码,访问令牌是处理 JWT 的正确方式,我该如何将响应传递到 Vue,因为它是来自社交名流的重定向,而不是 Axios 请求?
测试 JWT 后,我可以再次尝试注销以查看是否是 JWT 问题。
您确定用户有令牌吗?您是否在用户模型中使用 HasApiTokens
特征?
我已经用默认的 Auth::logout() 解决了这个问题。不需要 'Personal Access Token' 的代码。在护照的文档中 Laravel 在名为 laravel_token 的 cookie 中附加了一个 JWT,该护照将检查用户是否已通过身份验证。