Lumen启用CSRF令牌

时间:2018-01-15 06:53:27

标签: php laravel laravel-5 lumen

我知道流明用于会话较少的API开发仍然我有一个情况,我需要启用CSRF token.Session每个认为工作正常,但我需要启用csrf令牌,如果我添加

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

表格我收到错误

  

(1/1)ReflectionException类   Laravel \ Lumen \ Http \ Middleware \ VerifyCsrfToken不存在

在bootstrap / app.php中我没有注释

$app->middleware([
      'Illuminate\Cookie\Middleware\EncryptCookies',
     'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
     'Illuminate\Session\Middleware\StartSession',
   'Illuminate\View\Middleware\ShareErrorsFromSession',
    'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
 ]);

即使我已启用

$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
    'csrf' => 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken'
]);

如果我在中间件中评论csrf,那么我会得到以下错误

在刀片

中调用未定义的函数csrf_token()

我正在使用laravel "laravel/lumen-framework": "5.5.*",

任何人都可以帮助我如何在流明中启用VerifyCsrfToken

2 个答案:

答案 0 :(得分:1)

从流明文档Validation

  

表单请求

     

Lumen不支持表单请求。如果您想使用表单请求,则应使用完整的Laravel框架。

Lumen微框架v5.8不支持表格,因此没有csrf

答案 1 :(得分:0)

发生了同样的问题。如果将来有人在这里发布。

发现他们从5.2版开始删除了所有csrf内容(从哪个版本开始不确定)。要在Lumen 5.5或更高版本中使用csrf,您需要创建自己或从该特定版本的laravel软件包中复制VerifyCsrfToken中间件文件(在github中找到),并将其放置在lumen中间件文件夹中,并在bootstrap/app.php中调整路径相应地。

您可能还需要手动安装illuminate/cookie或其他必需的软件包。

VerifyCsrfToken.php文件可在laravel/framework/src/illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php

找到