重新提交表单时出现 TokenMismatchException
TokenMismatchException when resubmitting a form
我正在使用 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() !!}
这里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());
我正在使用 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() !!}
这里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());