web-dev-qa-db-ja.com

Laravel Passportトークンの有効期間

私が間違っていることを理解できません。トークンの有効期限を設定できません。

_<?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));
    }
}
_

しかし、$user->createToken()を呼び出すと、たとえば次のようになります。

_<?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);
    }
}
_

トークンの有効期限は1日ではなく1年です。どうして?経験時間を変更するには?

11
Terion

すべての付与タイプの有効期限を更新するために使用される方法は次のとおりです。

パーソナルアクセストークン:

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

        Passport::routes();
        Passport::personalAccessTokensExpireIn(Carbon::now()->addHours(24));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

その他すべて

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

        Passport::routes();
        Passport::tokensExpireIn(Carbon::now()->addHours(24));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

AuthServiceProviderの起動メソッドで上記のコードを更新するだけです。

13
vivek takrani

Passportのドキュメントはこの質問に答えているようです

https://laravel.com/docs/5.6/passport#token-lifetimes

bootAuthServiceProviderメソッドでPassport::tokenExpiresIn()を呼び出します

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

    Passport::routes();

    Passport::tokensExpireIn(now()->addDays(15));

    Passport::refreshTokensExpireIn(now()->addDays(30));
}
1
Sumit Anantwar

はい、ある日、VERSION = '5.8'でこの問題を見つけるために無駄になりました。

今のところ、変更が必要な場合があります your-project/vendor/laravel/passport/src/Passport.php。

これを変更-----> new DateInterval( 'P1Y')。 php関数です日付間隔を表します。

D --->は日Yを意味します--->年M --->は月を意味します

パスポートの3種類のトークン

1.303行の1.tokensExpireIn。

  1. 341行のpersonalAccessTokensExpireIn。

  2. 322行のrefreshTokensExpireIn。

0
Kapil Pal

この実装 、および ここ でPassportServiceProviderを自分のものに置き換える方法を参照してください。 Laravel 5.5

0
vitsen

ああ、パーソナルトークンは常に寿命が長く、これを設定できないことがわかりました:(

0
Terion

もしあなたがそうするなら

$token->expires_at =
        Carbon::now()->addDays(env('PERSONAL_ACCESS_TOKEN_EXPIRY__DAYS'));

有効期限はどのリクエストでも確認されないため、個人トークンの有効なオプションではないと思います。

0

あなたはこれを行うことができます:

$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
$token->expires_at =
        Carbon::now()->addDays(env('PERSONAL_ACCESS_TOKEN_EXPIRY__DAYS'));

$token->save();
0
maturecheese