0

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

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

4

1 回答 1

0

问题是我将值 _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());
于 2016-11-07T18:24:15.503 回答