2

我已经按照此处的文档使用护照设置了 Laravel:

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

我在 API 路由中编写了一条路由并http://localhost/laravel_project/public/api/user使用邮递员发送请求,但它向我显示以下错误:

RouteCollection.php 第 161 行中的 NotFoundHttpException:

我有以下路线(在 routes/api.php 中):

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

但是当我删除->middleware('auth:api')路线中的线路时,它对我来说工作正常。

我怎样才能解决这个问题?

另外请告诉我,如果我不想在某些路线中添加护照身份验证,我该怎么做?

4

2 回答 2

2

我遇到了同样的问题,看来您必须指定 Accept 标头,application/json如 Matt Stauffer所示

一些进一步的说明:

  1. 您的默认 Accept 标头设置为 text/html,因此 Laravel 会尝试将您重定向到 url /login,但可能您还没有完成 PHP artisan make:auth,因此它不会找到登录路径。
  2. 当您删除中间件时,它会起作用,因为您不再验证您的请求
  3. 要对某些路由进行身份验证,只需使用Route::groupauth:api作为中间件对它们进行分组
于 2016-12-29T21:16:02.303 回答
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 路由。

编辑:为了确保路由确实存在所需的中间件,请运行php artisan route:list.

于 2016-10-25T11:52:52.440 回答