在laravel表单中显示令牌未命中匹配异常

时间:2015-10-14 18:16:21

标签: laravel laravel-5 laravel-5.1

我有一个简单的表单来创建用户注册,但是当表单提交时,它会显示错误“令牌不匹配异常”。我已经尝试替换名称字段和id字段但我找不到什么是错的。 任何人都可以告诉我出了什么问题?

<form action="http://example.com/registration" method="POST">
...............
......
</form>

2 个答案:

答案 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();

您可以在此链接http://laravel.com/docs/4.2/html

中找到完整的文档