我有一个简单的表单来创建用户注册,但是当表单提交时,它会显示错误“令牌不匹配异常”。我已经尝试替换名称字段和id字段但我找不到什么是错的。 任何人都可以告诉我出了什么问题?
<form action="http://example.com/registration" method="POST">
...............
......
</form>
答案 0 :(得分:1)
您必须将CSRF令牌添加到表单中:
<form action="http://example.com/registration" method="POST">
{{ csrf_field() }}
......
</form>
引用the docs:
Laravel可以轻松保护您的应用免受cross-site request forgeries的攻击。跨站点请求伪造是一种恶意攻击,即代表经过身份验证的用户执行未经授权的命令。
Laravel为应用程序管理的每个活动用户会话自动生成CSRF“令牌”。此令牌用于验证经过身份验证的用户是否是实际向应用程序发出请求的用户。要生成包含CSRF令牌的隐藏输入字段
_token
,您可以使用csrf_field
帮助程序函数
答案 1 :(得分:0)
因为您没有将安全令牌与表单数据一起传递。 请使用
{{ Form::open(array('url' => 'foo/bar')) }}
........
........
{{ Form::close() }}
Laravel提供了一种简单的方法来保护您的应用程序免受跨站点请求伪造。首先,随机令牌放在用户的会话中。如果您使用带有POST,PUT或DELETE的Form :: open方法,CSRF令牌将自动作为隐藏字段添加到您的表单中。或者,如果您希望为隐藏的CSRF字段生成HTML,则可以使用令牌方法:
echo Form::token();
中找到完整的文档