首页 文章

laravel 5.3 中的 Passport 身份验证无效

提问于
浏览
2

根据以下文档,我有 set-up 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 回答

  • 2

    我遇到了同样的问题,似乎你必须将 Accept 标头指定为application/json,如 Matt Stauffer 所示这里

    进一步说明:

    • 您的默认 Accept 标头设置为 text/html,因此 Laravel 会尝试将您重定向到 url /login,但可能您还没有完成 PHP artisan make:auth所以它不会找到登录路由。

    • 当您删除中间件时,它将起作用,因为您不再对您的请求进行身份验证

    • 要对某些路由进行身份验证,只需使用Route::groupauth: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 路由。

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

相关问题