Laravel API внезапно возвращает ошибку без аутентификации Passport 401

У меня есть установка, в которой 2 установки Laravel 5.3 действуют как API и клиент для развязанного решения для электронной коммерции.

проработав около года, вдруг он начал возвращать ошибку 401 Unauthenticated.

Моя реализация сделана точно в соответствии с документом Laravel 5.3.

Ошибка Ошибка клиента: "GET" http://myapi.com/api/get/product/ привел к ответу "401 Unauthorized": {"error":"Unauthenticated."


person Kasun Rajapaksha    schedule 04.03.2018    source источник


Ответы (1)


Наблюдения

  • Мы обнаружили, что внешний интерфейс веб-сайта не может подключиться к серверной части для получения данных.
  • API возвращал и ошибка аутентификации.
  • Дальнейшее раскрытие показало, что проблема связана с токеном аутентификации.
  • Затем мы проверили токен и обнаружили, что срок его действия истек.

Основная причина

  • Согласно документации Laravel (Аутентификация API (Passport)), токены Laravel версии 5.3 не нужно обновлять и обновлять.

  • Вопреки документу, срок действия токенов Laravel 5.3 истекает через 1 год, и их необходимо обновлять/продлевать.

  • По иронии судьбы срок действия «токена обновления Laravel» истекает в тот же день, что делает невозможным автоматическое обновление токена после истечения срока действия.

Решение

  • Перед созданием токена Laravel 5.3 увеличьте время жизни токена обновления до большего значения, чем токен доступа.
  • Используйте приведенный ниже код в методе загрузки AuthServiceProvider.php и ниже $this->registerPolicies();

    $this->registerPolicies();

    Паспорт::маршруты(); Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));

  • Игнорируя документ Laravel 5.3, реализуйте метод обновления токена с помощью Refresh Token.

person Kasun Rajapaksha    schedule 04.03.2018