Laravel 5 CSRF 全局令牌隐藏字段,用于页面中所有表单

2022-08-30 15:06:11

我最近迁移到了Laravel 5,现在CSRF检查在每个帖子提交上。我想过删除它,但我想遵循最佳实践,所以我会保持这种方式。

另一方面,我在提交ajax请求时遇到问题。我的页面有多个表单,有些提交甚至不是来自表单,只是普通的ajax调用。我的想法是在页面上有一个隐藏的“令牌”输入,并将其附加到每个提交中。拥有通用的单一令牌输入有什么缺点吗?

另外,如何输出令牌?是否可以只在页面页脚上创建一个隐藏的输入?


答案 1

我没有看到任何缺点。您可以在布局文件中轻松创建全局令牌字段:

<input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />

或者,如果您使用表单生成器:

{!! Form::token() !!}

在jQuery中,您可以使用类似这样的东西将令牌附加到每个请求。


答案 2

有一个帮助程序可以在表单中添加表单令牌。你可以只使用

{!! csrf_field() !!}

在表单内部。它将添加隐藏的输入和令牌。


推荐