我想在laravel框架中使用form标签,如下所示
<form method="post" action="<?php echo 'SongController@savenew';?>">
但提交后却给我一个错误
VerifyCsrfToken.php第53行中的TokenMismatchException:
答案 0 :(得分:2)
您需要在表单中加入CSRF token,如下所示:
Laravel可以轻松保护您的应用程序免受跨站点请求伪造。跨站点请求伪造是一种恶意攻击,即代表经过身份验证的用户执行未经授权的命令。
Laravel自动生成CSRF&#34;令牌&#34;对于应用程序管理的每个活动用户会话。此令牌用于验证经过身份验证的用户是否是实际向应用程序发出请求的用户。要生成包含CSRF令牌的隐藏输入字段_token,您可以使用csrf_field辅助函数:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
答案 1 :(得分:0)
您需要使用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(); !!}
答案 2 :(得分:0)
Laravel表单请求始终需要csrf令牌
使用
<Form method="post" action="">
{{ csrf_field() }}
</Form>