csrf_token()在l5-swagger中为空,除GET请求外无法执行任何请求

时间:2018-12-20 10:29:37

标签: php laravel swagger csrf-token

csrf_token()在l5-swagger中为空,除GET之外无法执行任何请求,因为标头丢失并且始终获得419错误代码

我尝试向邮递员索取,并且可以使用。但是大摇大摆却没有。我从此链接(laravel 5 csrf_token value is Empty)看了一眼,但我仍然不知道如何解决我的问题。

如何在l5-swagger视图中获取csrf_token?

2 个答案:

答案 0 :(得分:2)

我认为您应该尝试将其添加到/routes/web.php

Route::group(['middleware' => 'web'], function () {
    Route::get('api/documentation', '\L5Swagger\Http\Controllers\SwaggerController@api')->name('l5swagger.api');
});

因此您可以在l5-swagger路由上添加Web中间件

希望对您有帮助

答案 1 :(得分:0)

对于 Laravel 8.x,Routes 的解决方案对我不起作用。

相反,我修改了文件 config/l5-swagger.php

您必须向 defaults[routes][middleware][api] 添加多个条目。默认情况下,此条目应为空。

要修复 CSRF 验证,您必须添加:

...

'api' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

...

之后只需清除配置缓存

php artisan config:cache

你可以走了!