我想在laravel框架中使用form标签,如下所示
<form method="post" action="<?php echo 'SongController@savenew';?>">
但提交后它给了我一个错误
VerifyCsrfToken.php第53行中的TokenMismatchException:
您需要在表单中包含CSRF token,如下所示:
Laravel可以轻松保护您的应用程序免受跨站点请求伪造。跨站点请求伪造是一种恶意攻击,由此代表经过身份验证的用户执行未经授权的命令。
Laravel为应用程序管理的每个活动用户会话自动生成CSRF“令牌”。此令牌用于验证经过身份验证的用户是否是实际向应用程序发出请求的用户。要生成包含CSRF令牌的隐藏输入字段_token,您可以使用csrf_field辅助函数:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
您需要使用Laravel的表单构建器。因为它需要CSRF(跨站点请求伪造)令牌,但是当您手动创建表单时,令牌未添加到html中,您必须手动添加令牌ie. <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
,但使用Laravel标准更安全一点:
<?= Form::open(['controller' => 'SongController@savenew', 'method' => 'POST']); ?>
<?= Form::close(); ?>
如果你正在使用刀片(推荐):
{!! Form::open(['controller' => 'SongController@savenew', 'method' => 'POST']) !!}
{!! Form::close(); !!}
Laravel表单请求始终需要csrf令牌
用过的
<Form method="post" action="">
{{ csrf_field() }}
</Form>