2017-05-27 85 views
0

至於Laravel 5.4文檔以下內容:Laravel重定向回csrf_token匹配異常

我重定向用戶回來,如果驗證失敗,就像這樣:

return redirect('login')->withErrors('Email/password combination not recognised'); 

它把我帶回到登錄路由,讓我看到形式,當我再次提交時顯示csrf_token不匹配。無論我使用back()還是重定向(),都會發生同樣的事情。

@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() }} 
+0

請發佈您的代碼,HTML表單和處理腳本。 –

+0

查看錶格代碼。我正在使用Form :: open() – Waleed

+1

不知道,試着把'{{csrf_field()}}'手動運行 –

回答

0

我會離開這裏爲那些以後搜索它...

當你重定向到以前的形式使用背()或重定向()。 Form :: open()確實會生成csrf標記輸入,但會將其賦值爲空值。通過使用{{csrf_field()}}手動添加它,它不會生成此異常。

0

確保用戶一直沒有autenticate和後重定向之前驗證csrf_token

在HTML的頭部使用<meta name="csrf-token" content="{{ csrf_token() }}">

如果您正在使用jQuery阿賈克斯添加:

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

要將腳本標籤中的基礎應用佈局。

退房https://laravel.com/docs/5.4/csrf

+0

先生其不ajax – Waleed

+0

當然。我明白了。我想覆蓋所有可能的情況來回答你的問題。 – Roldan