2016-10-05 144 views
5

Laravel 5.3 - 我的目標是通過ajax發送登錄表單到登錄控制器(AuthenticatesUsers trait),並獲得響應(json會好的),所以我可以在重定向到「儀表板「部分(已認證)。我需要一些前端的超時。 那麼可以這樣做?如果可以的話,暗示就足夠了。 在此先感謝。Laravel身份驗證登錄超時

JavaScript示例:

$("#login-form").submit(function (e) { 

var url = "/login"; // the script where you handle the form input. 

$.ajax({ 
    type: "POST", 
    cache : false, 
    url: url, 
    data: $("#login-form").serialize(), // serializes the form's elements. 
    success: function() 
    {  //Do the timeout part, then redirect 
      topbar.addClass('success'); 
      form.addClass('goAway'); 
      article.addClass('active'); 
      tries = 0; 

    }, 
    error: function() { 
     location.reload(); 
     input.addClass('disabled'); 
     topbar.addClass('error'); 
    } 

});}); 

登錄形式通過郵寄發送的,我想自己做一個重定向,而不是通過控制器,以及我主要關注的是JavaScript重定向將改變CSRF令牌。

編輯: 我才發現是包括單詞內的ajax設置另一件事:

$.ajaxSetup({ 
    headers: {'X-CSRF-TOKEN': _token} 
}); 

和防止形式默認動作:

$("#login-form").submit(function (e) { 
     e.preventDefault(); 

這是我的登錄表單(包括所有的JS和CSS在父視圖中):

@extends('layouts.app') 

@section('content') 

<form class="form form-horizontal" id="login-form" role="form" method="POST" action="{{ url('/login') }}"> 
    {{ csrf_field() }} 
    <div class="forceColor"></div> 
    <div id="logosm_wrapper"> 
     <img id="logosm_login" src="img/ipism_100x50.png" alt="logo" > 
    </div> 
    <div class="forceColor"></div> 
    @if (count($errors)) 
    <div class="topbar error"> 
    @else 
    <div class="topbar"> 
    @endif 
     <div class="spanColor"></div> 
     <input id="email" type="email" class="input form-control" name="email" placeholder="E-mail" value="{{ old('email') }}"> 
    </div> 
    @if (count($errors)) 
    <div class="topbar error"> 
    @else 
     <div class="topbar"> 
    @endif 
     <div class="spanColor"></div> 
     <input id="password" type="password" class="input form-control" name="password" placeholder="Password"/> 
    </div> 
    <button class="submit" id="submit">Login</button> 
    <!--input class="submit" id="submit" type="submit" value="Login"--> 
</form> 
@endsection 

這是按照打算通過Laravel驗證主編,我的目的是要通過對JS授權綠了輸入字段,然後重定向用戶儀表盤......

+0

你有沒有看https://laracasts.com/discuss/channels/general-discussion/laravel-5-ajax-tokenmismatchexception –

+0

是的,我查了它,這不是我主要關心的,因爲你可以關閉令牌驗證(獲取擺脫)。問題是你可以在驗證用戶後自己重定向auth與所有數據 –

+0

爲什麼如果csrf_token在重定向後更改,這是一個問題? –

回答

0

我建議妳阿賈克斯補充一點:

$.ajax({ 
    ....  
    async  : false, 
....