Laravel使用Passport生成删除以前旧Token办法

in 交流 with 0 comment

实现原理 监听Passport的AccessTokenCreated和efreshTokenCreated。
1.在app/Providers/EventServiceProvider中增加监听项:

'Laravel\Passport\Events\AccessTokenCreated' => [
        'App\Listeners\Auth\RevokeOldTokens',
    ],

2.运行
php artisan event:generate

3.handle加入以下代码

     $tokenIdArr = Token::where('id', '!=', $event->tokenId)
            ->where('user_id', $event->userId)
            ->pluck('id')->toArray();
        DB::table('oauth_refresh_tokens')->whereIn('access_token_id', $tokenIdArr)
            ->delete();
        Token::where('id', '!=', $event->tokenId)
            ->where('user_id', $event->userId)
            ->delete();
留言