【问题标题】:Lumen Enable CSRF TokenLumen 启用 CSRF 令牌
【发布时间】:2018-01-15 06:53:26
【问题描述】:

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

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

在表单中我得到了错误

(1/1) 反射异常类 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

【问题讨论】:

  • 类至少存在吗?你试过典型的“composer dump-autoload”吗?
  • @Amarnasan.它实际上会在哪里。即使我搜索了那个字段但没有找到
  • 如果没问题,您可以使用 JWT 来满足您的要求。 Lumen 使用起来有点容易
  • @Pyramid.ya 我同意,但在这个项目中我不能使用
  • 你当前的会话驱动是什么?

标签: php laravel laravel-5 lumen


【解决方案1】:

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

发现他们从 5.2 开始从 lumen 中删除了所有 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找到

【讨论】:

    【解决方案2】:

    来自流明文档Validation

    表单请求

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

    Lumen 微框架 v5.8 不支持表单,所以它没有 csrf

    【讨论】:

      猜你喜欢
      • 2016-03-20
      • 1970-01-01
      • 2012-05-29
      • 2014-05-17
      • 2011-09-24
      • 2014-04-29
      • 2016-01-31
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多