Срок действия токена jwt-auth истек - PullRequest
0 голосов
/ 18 марта 2019

Я использую jwt-auth и vue-auth для моего SPA.В целях тестирования у меня переменная refreshData в файле конфигурации для vue-auth установлена ​​в 1 для обновления каждую минуту.Для файла конфигурации jwt-auth у меня установлено значение ttl 1, а значение refresh_ttl - 3.

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

{message: "Token has expired and can no longer be refreshed",…}
exception: "Tymon\JWTAuth\Exceptions\TokenExpiredException"

Почему это?Поскольку я обновляю токен, я думал, что refresh_ttl даже не имеет значения, но, похоже, это диктует это.

Ответы [ 4 ]

0 голосов
/ 18 марта 2019

Вы можете установить для ttl значение null, чтобы получить токен с неограниченным сроком действия.

'ttl' => env('JWT_TTL', null),

или прямо в .env

0 голосов
/ 18 марта 2019

В вашей функции обновления контроллера авторизации, пожалуйста, измените:

return response()->json([
        "success" => true,
        "payload" => [
            'access_token' => auth()->refresh(),
            'token_type' => 'bearer',
            'expires_in' => auth()->factory()->getTTL() * 60,
            'user' => auth()->user()
        ]
    ]);

И вам нужно изменить ваш config / auth.php следующим образом:

    'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
        'hash' => false,
    ],
],

И вот хорошийпример laravel-jwt-vuejs

0 голосов
/ 18 марта 2019

, если вы не хотите, чтобы срок действия вашего токена истекал в конфигурации jwt.php, замените

 'ttl' => env('JWT_TTL', null),


 'required_claims' => [
        'iss',
        'iat',
        // 'exp',
        'nbf',
        'sub',
        'jti',
    ],

, затем нажмите

php artisan config:cache
0 голосов
/ 18 марта 2019

в вашем AuthController попробуйте изменить

$this->middleware('auth:api', ['except' => ['login']]);

в

$this->middleware('auth:api', ['except' => ['login', 'refresh']]);
...