2016-10-05 6 views
5

लैरवेल 5.3 - मेरा लक्ष्य लॉगिन नियंत्रक (प्रमाणीकरण यूज़र विशेषता) में AJAX के माध्यम से लॉगिन फ़ॉर्म भेजना है, और प्रतिक्रिया प्राप्त करने के लिए (जेसन ठीक होगा), इसलिए मैं "डैशबोर्ड पर रीडायरेक्ट करने से पहले टाइमआउट सेट कर सकता था "खंड (प्रमाणीकृत)। मुझे कुछ फ्रंटेंड सामान के लिए उस टाइमआउट की ज़रूरत है। तो क्या यह किया जा सकता है? अगर यह हो सकता है, तो संकेत पर्याप्त होगा। अग्रिम धन्यवाद।औथ लॉगिन पर लार्वा टाइमआउट

जावास्क्रिप्ट उदाहरण:

$("#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'); 
    } 

});}); 

लॉग इन प्रपत्र पोस्ट के माध्यम से भेजा जाता है, और मैं अपने आप से एक रीडायरेक्ट करने के लिए, नियंत्रक के माध्यम से नहीं चाहते हैं, और मेरी मुख्य चिंता जावास्क्रिप्ट रीडायरेक्ट बदल जाएगा पर CSRF टोकन है।

संपादित करें: एक और बात यह है कि मुझे पता चला सहित टोकन के अंदर ajax स्थापना:

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

और रोकने के रूप डिफ़ॉल्ट कार्रवाई:

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

यहाँ अपना लॉगिन रूप है (सभी जे एस और सीएसएस शामिल किया गया है अभिभावक दृश्य में):

@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 प्रमाणीकरण द्वारा एड, मेरा इरादा जे एस के माध्यम से प्राधिकरण पर हरे रंग बाहर इनपुट फ़ील्ड के लिए गया था, और फिर डैशबोर्ड पर उपयोगकर्ता अनुप्रेषित ...

+0

आप पर ध्यान दिया है https://laracasts.com/discuss/channels/general-discussion/laravel-5-ajax-tokenmismatchexception –

+0

हां, मैंने इसे देखा है, यह मेरी मुख्य चिंता नहीं है, क्योंकि आप टोकन सत्यापन बंद कर सकते हैं (प्राप्त करें छुटकारा पाना)। बात यह है कि आप उपयोगकर्ता –

+0

के सत्यापन के बाद सभी डेटा के साथ अपने आप को ऑथ रीडायरेक्ट कर सकते हैं यदि csrf_token रीडायरेक्ट के बाद बदलता है तो यह समस्या क्यों है? –

उत्तर

0

मैं यू अपने ajax में इस ऐड का सुझाव:

$.ajax({ 
    ....  
    async  : false, 
.... 
संबंधित मुद्दे