在laravel 5.3中,Passport身份验证不起作用

时间:2016-10-24 12:31:33

标签: php laravel laravel-routing laravel-5.3 laravel-passport

我根据以下文档使用护照设置了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')行时,它对我来说运作正常。

我该如何解决这个问题?

另外请告诉我,如果我不想在我的某些路线中添加护照认证,我该怎么办?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,似乎您必须将“接头”标题指定为application/json,如Matt Stauffer所示here

进一步说明:

  1. 您的默认Accept标头设置为text / html,因此Laravel会尝试将您重定向到网址/login,但可能您还没有完成PHP工匠make:auth所以它不会找到登录信息路由。
  2. 当您删除中间件时,它将起作用,因为您不再对您的请求进行身份验证
  3. 要对某些路由进行身份验证,只需使用Route::groupauth:api作为中间件对其进行分组

答案 1 :(得分: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