Laravel: после обновления JWT, сеанс истекает слишком часто

#php #laravel #apache #authentication #jwt

#php #laravel #apache #аутентификация #jwt

Вопрос:

итак, я обновляю свой jwt пакет на моем Laravel v5.8, мне нужно обновить из-за проблемы с безопасностью. Однако обновление jwt непросто, слишком много проб и ошибок. Наконец, я нашел решение из его репозитория github здесь, после jwt чего обновление завершено.

==========

Краткое изложение решения путем добавления:

(1) Обновите jwt с помощью composer require tymon/jwt-auth:1.0.* --prefer-source

(2) Измените строку ниже config/app.php , прежде чем:

 'providers' => [
...
'TymonJWTAuthProvidersJWTAuthServiceProvider' ,
...
]
 

в

 'providers' => [
...
'TymonJWTAuthProvidersLaravelServiceProvider' ,
...
]
 

(3) Добавить implements JWTSubject в User класс модели

(4) Добавьте нижеприведенную строку в User класс модели:

 public function getJWTIdentifier()
{
   return $this->getKey();
}

public function getJWTCustomClaims()
{
   return [];
}
 

(5) выполнить php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"

==========

Однако это имеет побочный эффект.

Теперь все сеансы входа в систему длятся недолго.

До этого исправления иногда требовался месяц для истечения срока действия сеанса входа в систему, но теперь ему нужно всего пару часов. Более того, никакая другая логика / кодировка не добавлена, кроме приведенной выше.

Есть идея / решение?

Заранее благодарю вас…

Комментарии:

1. Вы не предоставили нам много информации, связанной с этой актуальной проблемой (т.Е. Результаты отладки, конфигурация для пакета jwt или даже то, как долго «все сеансы входа в систему длятся недолго». точно. Мы говорим о часе, 5 минутах при загрузке следующей страницы? Тем не менее, я бы начал с проверки, требует ли текущая версия репозитория какого-либо файла настроек, который либо отсутствует, либо в нем отсутствуют значения, либо он был переименован из вашей очень старой версии.

Ответ №1:

Время жизни определяется в config/jwt.php .

Посмотрите строку, в которой говорится 'ttl' => env('JWT_TTL', 60) , что означает, что по умолчанию токен будет действителен в течение 1 часа.

Если у вас его еще нет, обязательно выполните следующую команду, чтобы опубликовать файл конфигурации пакета:

 php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"
 

Комментарии:

1. Привет, спасибо. Я постараюсь