2016-11-23 5 views
0

Я добавил это два слушателя событий для моего: EventServiceProviderLaravel паспорт фальшренонс и чернослив прослушиватель событий ничего не делают

/** 
* 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 у меня есть:

public function boot() 
    { 
     $this->registerPolicies(); 

     Passport::routes(); 
     passport::$revokeOtherTokens; 
     passport::$pruneRevokedTokens; 
     Passport::tokensExpireIn(Carbon::now()->addDays(1)); 
     Passport::refreshTokensExpireIn(Carbon::now()->addDays(2)); 

    } 

Я хочу паспорта для отмены всех других токенов доступа пользователя, а затем обрезать их, если они отменены. но ничего не происходит, и каждый раз, когда я запрашиваю токен доступа от почтальона, я получаю новый токен доступа, в то время как в базе данных имеется несколько токенов доступа.

+0

Создавали ли вы подходящие классы в вашем приложении \ Listeners? Они не выходят из строя, и вам приходится писать их самостоятельно. – Skysplit

+0

@Skysplit Спасибо за ваш совет. Я решил свою проблему, вы можете увидеть мой ответ ниже. –

ответ

2

Я решить мою проблему таким образом: Step1 - В EventServiceProvider должны изменить путь к createdn маркер доступа, а также обновить маркер создан:

protected $listen = [ 
     'Laravel\Passport\Events\AccessTokenCreated' => [ 
      'App\Listeners\RevokeOldTokens', 
     ], 

     'Laravel\Passport\Events\RefreshTokenCreated' => [ 
      'App\Listeners\PruneOldTokens', 
     ], 
    ]; 

Step2- генерируют эти два события слушателей:

php artisan event:generate 

Step3- Изменить AccessTokenCreated & RefreshTokenCreated методы ручки событий:

RevokeOldTokens Класс:

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 Класс:

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]); 

    } 
} 

После этого действия, если я отправить любой запрос к моему проекту он будет проверять лексемы и, если есть другой маркер будет отменить его и сделайте его неприкрытым.

1

Может быть потому, что вы пропустили что-то важное, чтобы паспортные работы найти,

1 Регистрация поставщика паспорта услуг в поставщиков массив вашей конфигурации/app.php Laravel \ Passport \ PassportServiceProvider :: класс,

1 вы должны добавить черту Laravel \ Passport \ HasApiTokens к вашей App \ модели пользователя 2 в файле конфигурации конфигурации/auth.php, вы должны установить параметр драйвера охранника аутентификации апи паспорту

проверить это http://www.snippetcase.com/snippet/61/API+Authentication+(Passport)+Laravel+5.3

+0

Спасибо, что ответили, но я уже сделал эти шаги. –