Laravel发布Api用作没有csfr令牌的Web路由

时间:2018-05-24 09:49:52

标签: php laravel-5 csrf-protection laravel-passport

这是我的情景:

我们需要在存储它们的同一个Web应用程序中使用一些Laravel API方法。 (我使用的是Laravel 5.5) 我有使用Bearer Token的第三部分应用程序使用的api路由,并且工作就像一个魅力。 所以,我创建了其他没有使用的路线组#api:auth"中间件,但" auth"一个(" web"中间件添加)。

RouteService提供程序初始化(" map"中调用的方法):

protected function mapWebApiRoutes() {
    Route::prefix('web_api')
        ->middleware('web')
        ->as('web_api.')
        ->namespace($this->namespace."\\API")
        ->group(base_path('routes/web_api.php'));
}

路线声明:

Route::group(['prefix' => 'v1', 'middleware' => ["auth"]], function () {
    // routes....
});

所以,如果我运行" php artisan route:list",它会输出如下路线:

GET|HEAD      | web_api/v1/controller            | web_api.      | ...\API\Controller@index      | web,auth
POST          | web_api/v1/controller/lists      | web_api.      | ...\API\Controller@lists      | web,auth      

我添加了 VerifyCsrfToken 的路由,但数组除外:

 protected $except = [
    "web_api/*"
];

使用GET方法的路由以及用户在我们的平台上登录时(通过身份验证中间件)可以正常工作,但POST路由会返回此机构未经授权的错误:

{message: "Unauthenticated."}

问题:

考虑到我已经从CSRF验证中排除了这些路线,有人可以向我解释这个错误是由什么引起的?

0 个答案:

没有答案