【发布时间】:2021-09-16 04:18:07
【问题描述】:
在我尝试做的一件小事上,我真的需要帮助。我尝试在我的 laravel / Vue 设置中为一位用户使用并发的 personal_access_tokens。一切工作正常,除了一件事我想在用户注销时通过它的 id 删除一个令牌。通过一个用户的登录,我为他们创建了一个personal_access_token。随着注销,这个特定的 access_token 应该被删除。
现在在我的注销方法中,我删除了所有令牌。这很好用,但是当删除一个特定的令牌(应该可以)时,我总是会收到此方法不存在的错误:
public function logout(Request $request){
Auth::guard('web')->logout();
// First try: auth()->user()->currentAccessToken()->delete();
// Second try: $request->user()->token()->revoke();
auth()->user()->tokens()->delete();
}
错误:
LOG.error:调用未定义的方法 Laravel\Sanctum\TransientToken::delete() {"userId":18,"exception":{}}
api.php
Route::group(['middleware' => 'auth:sanctum'], function () {
Route::post('/logout', [AuthController::class, 'logout']);
});
我尝试了以下内容:
https://laracasts.com/discuss/channels/laravel/passport-how-can-i-manually-revoke-access-token (护照)https://laracasts.com/discuss/channels/laravel/deleting-users-passport-token-on-logout https://divinglaravel.com/authentication-and-laravel-airlock https://laracasts.com/discuss/channels/laravel/spa-and-mobile-logout?page=1&replyId=698040
在所有这些线程中,使用的方法都应该有效,但不适用于我。我忽略了什么吗?
感谢每一个帮助!
【问题讨论】:
-
你试过
$request->user()->currentAccessToken()->delete();吗? -
是的,我确实尝试了 Sanctum 文档中的所有内容。
标签: laravel vue.js laravel-sanctum