laravel护照撤销和修剪事件监听器没有做任何事情 [英] laravel passport revoke and prune event listener is not doing anything
问题描述
我已将这两个事件侦听器添加到我的EventServiceProvider
I've added this two event listeners to my : EventServiceProvider
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Laravel\Passport\Events\AccessTokenCreated' => [
'App\Listeners\RevokeOldTokens',
],
'Laravel\Passport\Events\RefreshTokenCreated' => [
'App\Listeners\PruneOldTokens',
],
];
在我的AuthServiceProvider中,我有:
And in my AuthServiceProvider I have :
public function boot()
{
$this->registerPolicies();
Passport::routes();
passport::$revokeOtherTokens;
passport::$pruneRevokedTokens;
Passport::tokensExpireIn(Carbon::now()->addDays(1));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(2));
}
我希望护照撤消所有其他用户访问令牌,然后在撤消它们时修剪它们.但是没有任何反应,每次我向邮递员索取访问令牌时,数据库中都有多个访问令牌时,我会得到一个新的访问令牌.
I want passport to revoke all other user access tokens and then prune them if they are revoked. but nothing is happening and every time I request an access token from postman I get a new access Token while there are several access tokens in the database.
推荐答案
我已通过以下方式解决了我的问题:
步骤1-在EventServiceProvider
中,应将路径更改为创建的访问令牌,并刷新创建的令牌:
I've Solved My problem This way :
Step1 - In EventServiceProvider
should change the path to the Access Token created and also refresh token created :
protected $listen = [
'Laravel\Passport\Events\AccessTokenCreated' => [
'App\Listeners\RevokeOldTokens',
],
'Laravel\Passport\Events\RefreshTokenCreated' => [
'App\Listeners\PruneOldTokens',
],
];
Step2-生成这两个侦听器事件:
Step2- generate this two listeners events :
php artisan event:generate
Step3-修改AccessTokenCreated
& RefreshTokenCreated
事件处理方法:
Step3- Modify AccessTokenCreated
& RefreshTokenCreated
event handle methods :
RevokeOldTokens类:
RevokeOldTokens Class :
namespace App\Listeners;
use Laravel\Passport\Events\AccessTokenCreated;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use DB;
class RevokeOldTokens
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param AccessTokenCreated $event
* @return void
*/
public function handle(AccessTokenCreated $event)
{
DB::table('oauth_access_tokens')
->where('id', '<>', $event->tokenId)
->where('user_id', $event->userId)
->where('client_id', $event->clientId)
->update(['revoked' => true]);
}
}
PruneOldTokens类:
PruneOldTokens Class :
namespace App\Listeners;
use Laravel\Passport\Events\RefreshTokenCreated;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use DB;
class PruneOldTokens
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param RefreshTokenCreated $event
* @return void
*/
public function handle(RefreshTokenCreated $event)
{
DB::table('oauth_refresh_tokens')
->where('id', '<>', $event->refreshTokenId)
->where('access_token_id', '<>', $event->accessTokenId)
->update(['revoked' => true]);
}
}
执行完此步骤后,如果我向我的项目发送任何请求,它将检查令牌,如果有另一个令牌,它将吊销它并使它不被授权.
After This steps if I send any request to my project it will check for tokens and if there is another token it will revoke it and make it unathorized.
这篇关于laravel护照撤销和修剪事件监听器没有做任何事情的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!