laravel 5 csrf_token 值为空
Posted
技术标签:
【中文标题】laravel 5 csrf_token 值为空【英文标题】:laravel 5 csrf_token value is Empty 【发布时间】: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
中间件?
【参考方案1】:
试试echo Form::token();
?如果不起作用,请尝试在控制台上使用php artisan generate:key
。
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review 他有空的 csrf 问题,所以生成密钥会帮助人 他已经接受了一个答案,你建议他尝试一下——这应该是一个评论。【参考方案2】:这是因为您没有使用网络组中间件。 Laravel 足够聪明,知道如果您不使用该组,则不需要令牌。
尝试在Route::group(['middleware' => '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 个小时才找到这个新手叮当声!
【讨论】:
以上是关于laravel 5 csrf_token 值为空的主要内容,如果未能解决你的问题,请参考以下文章