实现原理 监听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();
pxwei edit at Apr 20, 2020 at 12:59 am