routes/web.php中导致的Laravel令牌不匹配异常
我正在通过查看由routes/web.php中导致的Laravel令牌不匹配异常,php,laravel,csrf,Php,Laravel,Csrf,我正在通过查看由DevDojo创建的教程,在Laravel 5.4中学习Routing。在routes/web.php中使用以下代码将出现TokenMismatchException错误,并且我的代码在按下提交按钮后不起作用: Route::post('test', function () { return 'Printed by the route responsible for test post action.'; }); Route::get('test', function
DevDojo
创建的教程,在Laravel 5.4
中学习Routing
。在routes/web.php
中使用以下代码将出现TokenMismatchException
错误,并且我的代码在按下提交按钮后不起作用:Route::post('test', function () {
return 'Printed by the route responsible for test post action.';
});
Route::get('test', function () {
echo '<form method="post" action="test">';
echo '<input type="submit">';
echo '</form>';
});
我希望您能告诉我如何正确使用路由文件中的csrf\u field()
、csrf\u token()
或其他任何需要的内容,从而帮助我解决此问题非常感谢您。
csrf\u token()
只给您一个token
csrf\u field()
为您构建整个输入字段
例如:
{{csrf_token()}}
//输出:SomeRandomString
{{csrf_field()}}
//输出:
在你的问题中:
使用
或
csrf\u token()
只是给你这个token
csrf\u field()
为您构建整个输入字段
例如:
{{csrf_token()}}
//输出:SomeRandomString
{{csrf_field()}}
//输出:
在你的问题中:
使用
或
我认为您使用隐藏输入的方法是正确的(如果您有一个新的Laravel安装,否则请确保没有禁用检查令牌) 我建议您使用Laravel的(官方)表单生成器来处理表单() 然后,看一看: (一)
{{Form::open(数组('url'=>'profile'))}
您的表单内容放在这里
{{Form::close()}}
(2) 确保将其用于输出令牌:echo Form::token()代码>(在关闭表单之前)
(3) 最后,注册一个POST路由,用于检查令牌:
Route::post('profile',array('before'=>'csrf',function())
{
//
}));代码>
或者,您可以直接将表单操作指定给函数(我个人的最爱):
echo表单::打开(数组('action'=>)Controller@method“)
我认为您使用隐藏输入的方法是正确的(如果您有新的Laravel安装,否则请确保未禁用检查令牌)
我建议您使用Laravel的(官方)表单生成器来处理表单()
然后,看一看:
(一)
{{Form::open(数组('url'=>'profile'))}
您的表单内容放在这里
{{Form::close()}}
(2) 确保将其用于输出令牌:echo Form::token()代码>(在关闭表单之前)
(3) 最后,注册一个POST路由,用于检查令牌:
Route::post('profile',array('before'=>'csrf',function())
{
//
}));代码>
或者,您可以直接将表单操作指定给函数(我个人的最爱):
echo表单::打开(数组('action'=>)Controller@method“))
通过添加为字符串,csrf令牌将不起作用。试试这个value=“'.csrf_token()。”
如果你试试这个回音“{{csrf_field()}}”,会发生什么;对于令牌不匹配解决方案。通过添加为字符串,csrf令牌将不起作用。试试这个value=“'.csrf_token()。”
如果你试试这个回音“{{csrf_field()}}”,会发生什么;亲爱的朋友,正如你提到的,我应该注意每个函数的用法。我更改了代码并添加了echo csrf_字段代码>就在表单结束之前,它现在可以正常工作了。再次感谢你。你救了我一天。亲爱的朋友,正如你提到的,我应该注意每个功能的使用。我更改了代码并添加了echo csrf_字段代码>就在表单结束之前,它现在可以正常工作了。再次感谢你。您救了我一天。亲爱的先生,谢谢您提供的精彩链接。这肯定会帮助我更好地使用这个框架。亲爱的先生,感谢您提供的精彩链接。它肯定会帮助我更好地使用这个框架。
echo '<input type="hidden" name="_method" value="post">';
echo '<input type="hidden" name="_token" value="csrf_field();">';
<input type="hidden" name="_token" value="csrf_token();">;
<input type="hidden" name="_token" value="csrf_field();">;
echo csrf_field();
{{ csrf_field() }}