【问题标题】:laravel 5 csrf_token value is Emptylaravel 5 csrf_token 值为空
【发布时间】:2016-05-14 23:36:36
【问题描述】:

为什么 laravel 5 csrf_token 的值总是空的?

我怎样才能得到那个令牌值?

我试过了,

  {!! csrf_token !!} , {{ csrf_token }} and 
  {{ Form::open() }} ....{{ Form::close() }}

我的输出

  <input type="hidden" name="_token"></input>

【问题讨论】:

  • 在创建表单时是否使用web 中间件?

标签: php laravel laravel-5.2 csrf-protection


【解决方案1】:

试试echo Form::token();?如果不起作用,请尝试在控制台上使用php artisan generate:key

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 他有空的 csrf 问题,所以生成密钥会帮助人
  • 他已经接受了一个答案,你建议他尝试一下——这应该是一个评论。
【解决方案2】:

这是因为您没有使用网络组中间件。 Laravel 足够聪明,知道如果您不使用该组,则不需要令牌。

尝试在Route::group(['middleware' =&gt; 'web'] 内移动您的路线并告诉我们:)

来源:不久前我犯了同样的错误。

【讨论】:

  • 这是正确答案。只为遇到这种情况的其他人提供帮助,检查您是否使用与 web.php 分开的文件(在我的示例中,一个多租户系统,除了 web.php 用于核心路由之外,还为每个租户使用 routes.php 文件)如果您表单是在 routes.php 文件底部的 catch all 路由中生成的,您最好也将这些路由包装在 Web 中间件中。希望这是有道理的,只是说要注意捕获导致此问题的所有路线,以及它让我有点困惑。
【解决方案3】:

谢谢大家。

终于找到解决办法了。

全新安装:

Route::get('foo', function () {
  return csrf_token(); // null
});

使用这个:

Route::group(['middleware' => 'web'], function () {
  Route::get('bar', function () {
    return csrf_token(); // works
});

});

它的工作。

【讨论】:

    【解决方案4】:

    我偶然发现了这篇文章,我花了一个下午突然遇到“由于不活动而导致页面过期。”当我发布时。 在执行“查看源代码”时,所有标记都存在且正确。 只是我包括了:

      $("#editaddTarget input").each(function () {
                        $(this).val("");
    
                    });
    

    当我启动一个模态时,它被解雇了。所以我今天学到了一些东西,而且我花了 5 个小时才找到这个新手叮当声!

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 2023-03-18
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2016-05-26
      相关资源
      最近更新 更多