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() }}