首页 > 解决方案 > 如何注销并撤销 laravel 8 api 中的所有 oauth 令牌?

问题描述

我用passport和laravel 8构建的api默认不注销。

我找到了一个脚本,但它没有删除 oauth-access-tokens 表中的条目

我向 AuthController 添加了一个函数:

 
    public function logout(Request $request){
        $accessToken = auth()->user()->token();
        $token= $request->user()->tokens->find($accessToken);
        $token->revoke();
        return response(['message'=> 'Je bent uitgelogd'], 200);
    }

并在 api.php 中添加了一个路径:

Route::post( 'logout', 'App\Http\Controllers\API\AuthController@logout')->middleware('auth:api'); 

当我尝试使用 Postman 注销时,我会收到一条成功消息,但不会删除 oauth-access-token 表中的条目。

我打算为用户删除所有令牌,以从所有设备中注销

谁能告诉我我做错了什么?

标签: laravelapitokenlogout

解决方案


解决了:

我使用了以下代码:


use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;

和功能:

public function logout(Request $request){
    Auth::user()->tokens->each(function($token, $key) {
        $token->delete();
    });
    return response(['message'=> 'Je bent uitgelogd'], 200);
   
} 

所以什么都没有被撤销,但所有的令牌都被删除了..


推荐阅读