重新提交表单时出现 TokenMismatchException

TokenMismatchException when resubmitting a form

我正在使用 Laravel 5.3laravelcollective/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() !!}

这里token实际上创建了两次,两次token是一样的

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

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

$request->input('_token') 没有被过滤。 相反,我已将其更改为以下有效,因为它可以过滤 _token:

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