2016-10-24 4 views
2

У меня есть Laravel настройки, используя паспорт в соответствии с документацией здесь:аутентификации Passport не работает в Laravel 5.3

https://laravel.com/docs/5.3/passport.

Я написал один маршрут в маршрут API и отправить запрос http://localhost/laravel_project/public/api/user с помощью почтальона, но его показ меня под ошибкой:

NotFoundHttpException in RouteCollection.php line 161:

У меня есть следующий маршрут (в маршрутах/api.php):

Route::get('/user', function (Request $request) { 
    return array(
     1 => "John", 
     2 => "Mary", 
     3 => "Steven" 
    ); 
})->middleware('auth:api'); 

, но когда я удалил ->middleware('auth:api') линия на маршруте, он отлично работает для меня.

Как это исправить?

Также, пожалуйста, скажите мне, не хочу ли я добавлять аутентификацию паспорта в мои маршруты, как я могу это сделать?

ответ

1

В вашем routes/api.php вы можете сделать это:

Route::group(['middleware' => 'auth:api'], function(){ 

    Route::get('/user', function (Request $request) { 
     return array(
      1 => "John", 
      2 => "Mary", 
      3 => "Steven" 
     ); 
    }); 

}); 

Всех маршруты, которые вы определяете в этой группе будет иметь auth:api промежуточное программное обеспечение, так что нужно будет аутентификация паспорта, чтобы получить доступ к нему.

Вне этой группы вы можете разместить свои маршруты api, которые не нуждаются в аутентификации.

EDIT: Чтобы убедиться, что маршрут действительно существует с необходимым промежуточным программным обеспечением, запустите php artisan route:list.

+0

Тем не менее я получаю сообщение об ошибке: NotFoundHttpException в Строка RouteCollection.php 161: – okconfused

+0

@okconfused Что происходит, когда вы запускаете 'php artisan route: list'? Маршрут появляется в списке с api и auth: api как промежуточное ПО? Я использую Laravel 5.3 и паспорт в своем проекте с этим маршрутом, и он работает на меня. –

+0

Когда я запустил эту команду php artisan route: list, он показывает мне Метод: GET | HEAD, URI: api/user, Atcion: Closure and Middleware: api, auth: api Я пытаюсь использовать API в почтальоне этот URL-адрес http: // localhost/project/public/api/user с заголовком. Content-Type: application/json Также у меня есть только один маршрут в маршрутах/api.php, который упоминается в вышеупомянутом вопросе, возможно, это проблема. Не могли бы вы рассказать мне, как вы отправляете запрос API с токеном? – okconfused

2

У меня была та же проблема, кажется, вы должны указать Accept заголовок application/json, как показано Мэттом Стауффер here

Некоторые дополнительные примечания: заголовок Accept

  1. Ваш по умолчанию устанавливается в текст/html, поэтому Laravel попробует перенаправить вас на url /login, но, возможно, вы еще не сделали PHP artisan make:auth, чтобы он не нашел логин входа.
  2. При удалении промежуточного ПО не будет работать, потому что вы больше не проходит проверку подлинности запроса
  3. Чтобы проверить подлинность некоторых маршрутов, просто сгруппировать их с помощью Route::group и auth:api в качестве промежуточного
Смежные вопросы