重新提交表单

时间:2016-11-04 17:47:41

标签: php laravel-5 csrf laravelcollective

我正在使用 Laravel 5.3 laravelcollective / html 表格帮助。

当我提交表单时,如果验证失败,则会使用return redirect()->back()->with

返回到相同的表单

然后,如果我再次重新提交相同的表单,我将得到一个TokenMismatchException,发生的事情是在重新加载表单后csrf标记没有刷新。

有关如何刷新令牌的任何想法?

更新11/07

要打开表单,我使用以下内容:

{!! Form::open(['url'=>'/user/create', 'method'=>'post', 'id'=>'create']) !!}

自动添加令牌字段。

但我也试过手动添加令牌,如下所示:

{!! Form::open(['url'=>'/user/create', 'method'=>'post', 'id'=>'create']) !!}
{!! Form::token() !!}

这里令牌实际上是两次创建的,两个令牌都是相同的。

1 个答案:

答案 0 :(得分:0)

问题是我将值_token发送回视图。 我在做的是:

return redirect()
->back()
->with(
['errors' => $validator->errors()->all()] 
+ $request->input()
);

$ request->输入(' _token')未被过滤的情况。 相反,我已将其更改为以下工作,因为它会过滤_token:

return redirect()
->back()
->withErrors($validator->errors()->all())
->withInput($request->input());