Je ne comprends pas ce que je fais mal ... Je ne peux pas définir le délai d'expiration du jeton.
<?php
namespace App\Providers;
class AuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this->registerPolicies();
Passport::tokensExpireIn(Carbon::now()->addDays(1));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
}
MAIS quand j'appelle $user->createToken()
, par exemple comme ceci:
<?php
// as a demo
namespace App\Http\Middleware;
class ParseSpecialToken
{
public function handle($request, Closure $next)
{
$user = User::find(1);
$accessToken = $user->createToken('Some token')->accessToken;
$request->headers->add(['Authorization' => 'Bearer '. $accessToken]);
return $next($request);
}
}
L'expiration du jeton est toujours 1 an, pas 1 jour. Pourquoi? Comment changer le temps d'exp?
Voici les méthodes utilisées pour mettre à jour le délai d'expiration pour tous les types d'octroi:
Jeton d'accès personnel:
public function boot(){
$this->registerPolicies();
Passport::routes();
Passport::personalAccessTokensExpireIn(Carbon::now()->addHours(24));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
Reste tous
public function boot(){
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addHours(24));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
Il suffit de mettre à jour le code ci-dessus dans la méthode de démarrage d'AuthServiceProvider.
Veuillez voir cette implémentation et ici comment remplacer PassportServiceProvider par votre Cela a fonctionné pour moi avec Laravel 5.5
Ah, compris que les jetons personnels ont toujours une longue durée de vie et ne peuvent pas être configurés :(
Les documents de passeport semblent répondre à cette question
https://laravel.com/docs/5.6/passport#token-lifetimes
Dans la méthode boot
de AuthServiceProvider
, appelez Passport::tokenExpiresIn()
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
}
si tu fais
$token->expires_at =
Carbon::now()->addDays(env('PERSONAL_ACCESS_TOKEN_EXPIRY__DAYS'));
la date d'expiration n'est alors vérifiée à aucune demande, je pense donc que ce n'est pas une option valide pour les jetons personnels.
tu peux le faire:
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
$token->expires_at =
Carbon::now()->addDays(env('PERSONAL_ACCESS_TOKEN_EXPIRY__DAYS'));
$token->save();