Как использовать Отдельный паспорт API для Api и веб - PullRequest
0 голосов
/ 04 мая 2018

Существуют файлы маршрутов web и api. Веб-маршруты защищены аутентификацией, а неаутентифицированные пользователи перенаправляются на страницу входа. Но мое требование в файле маршрута API. Неаутентифицированные маршруты API должны получать пользовательский ответ JSON вместо перенаправления на страницу входа. Я новичок в паспортной функции. И я не могу изменить веб-маршруты, потому что они сделаны другим разработчиком.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я обновил метод рендеринга метода app / Exception / Handler.php следующим образом, и он заработал.

    {

        if($exception instanceof \Illuminate\Auth\AuthenticationException && $request->is('api/v*'))
            {

                return Response(['success'=>-1,'statuscode'=>401,'msg'=>'Sorry, your account has been logged in from another device.'],401);
            }

                return parent::render($request, $exception);
    }
0 голосов
/ 04 мая 2018

Когда запрос laravel не авторизован (он же «неаутентифицированные маршруты API»), laravel выдает одно и то же исключение, независимо от того, является ли он веб-или API-маршрутом.

Однако, когда исключение обрабатывается / обрабатывается приложением, ответ определяется как $request->expectsJson(), если его true, он возвращает его как json, если нет, он будет действовать так, как если бы это был веб-маршрут.

Вышеприведенная функция проверяет несколько функций и возвращает true, если любое из них верно:

  • header X-Requested-With === XMLHttpRequest
  • заголовок Content-Type содержит application/json
  • заголовок Content-Type содержит подстановочный знак (*/*)
  • заголовок Accept содержит application/json

Убедитесь, что ваш запрос API соответствует любому из вышеописанных заголовков, и в этом случае должен возвращать ошибку аутентификации как json.

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

  • переопределить заголовок запроса в поставщике услуг, если маршрут определен как маршрут API. (не пытайтесь сделать это в промежуточном программном обеспечении, оно может не работать)
  • переопределить обработчик исключений таким же образом, как описано выше
  • и, конечно, возможны и другие сценарии
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...