[英]Laravel redirect back csrf_token mismatch exception
如以下Laravel 5.4的文档所示:
如果验证失败,我将重定向用户,如下所示:
return redirect('login')->withErrors('Email/password combination not recognised');
它带我返回登录路径,显示表单,当我再次单击提交时,显示csrf_token不匹配。 无论我使用back()还是redirect(),都会发生相同的事情。
@if(count($errors)>0)
<div class="alert alert-danger" role="alert">
<strong>Errors:</strong>
@foreach($errors->all() as $error)
<li> {{ $error }} </li>
@endforeach
</div>
@endif
{{ Form::open(['url' => url('login') ]) }}
<div class="form-group">
<label for="email" class="col-md-4 control-label">Email</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="" required autofocus>
</div>
</div>
<br>
<br>
<div class="form-group">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<div class="checkbox">
<label>
<input type="checkbox" name="remember"> Remember Me
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-8 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Login </button>
</div>
</div>
</div>
{{ Form::close() }}
确保用户在重定向之前和之后尚未被激活,并验证csrf_token 。
在HTML的开头使用<meta name="csrf-token" content="{{ csrf_token() }}">
。
如果使用的是jQuery Ajax,请添加:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
脚本标记内的基本应用布局。
我将其留给以后供以后搜索的人...
当您使用back()或redirect()重定向回以前的形式时。 Form :: open()确实会生成csrf令牌输入,但会为其提供空值。 通过使用{{csrf_field()}}手动添加它,不会生成此异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.