9

मैं आयनएथ & का उपयोग कर रहा हूं, ऐसा लगता है कि यह लगभग यादृच्छिक रूप से मुझे लॉग आउट कर रहा है? मैं कोडनिर्देशक v2.1.4 का उपयोग कर रहा हूं - यह सही जुर्माना में लॉग इन करता है हालांकि आयनएथ यादृच्छिक अंतराल पर लॉग आउट करना प्रतीत होता है, क्या सत्र को सक्रिय रहने के लिए मजबूर करने का कोई तरीका है जब तक कि मैं ionAuth-> लॉगआउट फ़ंक्शन को कॉल नहीं करता?IonAuth - मुझे यादृच्छिक रूप से लॉग आउट कर रहा है

$config['sess_cookie_name']  = 'cisession'; 
$config['sess_expiration']  = 7200; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 600; 

मेरे ion_auth कॉन्फ़िग फ़ाइल के रूप में निम्नानुसार है::

मेरे सीआई config की तरह लग रहा है इस प्रकार है

$config['user_expire'] = 0; 
$config['user_extend_on_login'] = FALSE; 

किसी को भी मुझे क्या कारण समस्या हो सकती पर कोई संकेत दे सकते हैं (रों) ?

+0

आप किसी भी ajax अनुरोध कहीं भी कर रहे हैं? सीआई सत्र सत्र और दौड़ की स्थितियों के साथ समस्याएं हैं जिन्हें अभी तक पूरी तरह से संबोधित नहीं किया गया है – jmadsen

+0

मैं AJAX अनुरोधों का उपयोग कर रहा हूं - मुखपृष्ठ पर AJAX अनुरोध है जो मूल रूप से डेटाबेस तालिका खोजने के लिए एक GET अनुरोध करता है। – Zabs

उत्तर

15

समस्या का कारण एक सत्र कुकी रोटेशन जब एक AJAX कॉल किया जाता है है, उचित ठीक CodeIgniter 3

में शामिल किया गया था आप चार विकल्प हैं:

कोप: मैं वास्तव में इसका कारण जानने के बिना पहले इस समस्या का सामना करना पड़ा। संक्षेप में, मैंने प्रत्येक XMLHttpRequest का वादा सहेजा, यदि HTTP स्थिति कोड 401 का सामना किया गया था, तो क्लाइंट साइड एप्लिकेशन किसी पॉपअप के रूप में प्रमाण-पत्रों का अनुरोध करेगा, और फिर AJAX वादे को पुनः प्रयास करेगा। jQuery के साथ

क्लाइंट साइड, सिर्फ इस ajaxError हैंडलर जोड़ने:

$(document).ajaxError(function (e, xhr, settings, exception) { 
    if (xhr.status == 401) 
    { 
     // open your popup 
     $('#login-popup').modal('open'); 

     // attach the xhr object to the listener 
     $(document).bind("retry-xhr", { 
       xhro: xhr 
      }, 
      function(event) { 
      // retry the xhr when fired 
      $.ajax(event.data.xhro); 
     }); 
    } 
}); 

और जब आप वापस में लॉग इन कर रहे हैं, सिर्फ इस फोन पुनः अनुरोध करने के लिए:, केवल

$(document).trigger('retry-xhr'); 

सर्वर साइड आप यदि आपके कन्स्ट्रक्टर

if (!$this->session->userdata('logged_in') && $this->input->is_ajax_request()) 
     { 
      $this->output->set_status_header('401'); 
      exit; 
     } 

यह उपयोगी था क्योंकि कुछ उपयोगकर्ता लीए उनकी वेब ऐप विंडो रात भर खुली है और सत्र टाइमआउट किक कर देगा। फिर उपयोगकर्ता मुझे किसी भी AJAX फ़ंक्शन को करने में सक्षम नहीं होने के बारे में कॉल करेंगे, और मुझे उन्हें F5

ps दबाएं। यदि कोणीय पर, मैं HTTP प्रमाणीकरण इंटरसेप्टर मॉड्यूल सफलतापूर्वक

हैक का इस्तेमाल किया है: यह पोस्ट देखें, उनके समाधान, ci_session तालिका में एक और क्षेत्र बना सकते हैं और दोनों कुकीज़ के लिए जाँच करने के लिए है, इसलिए आपका सत्र अभी भी मान्य रहेगा घूर्णन के बाद।

यह भी विस्तार से बताते हैं कि इस गड़बड़

खड़ी कर रहा है http://www.hiretheworld.com/blog/tech-blog/codeigniter-session-race-conditions

अपग्रेड: प्रारंभ अगले संस्करण में यह पहले से तय हो गई है का उपयोग करते हुए:

https://github.com/EllisLab/CodeIgniter/tree/release/3.0

पैच सिस्टम में लाइन 346 बदलें/पुस्तकालयों/सत्र।php (समारोह sess_update())

if (($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now) 

के साथ:

if (($this->userdata['last_activity'] + $this->sess_time_to_update) >= $this->now || $this->CI->input->is_ajax_request()) 
+0

मैं कोशिश करूँगा - क्या कोडिनेटर के v2.1.4 से v3 में अपग्रेड करने के लिए कोई अच्छी मार्गदर्शिका है? क्या मुझे अपने v2 ऐप के लिए v3 संगत बनाने के लिए बहुत सारे कामकाज करने की आवश्यकता होगी? – Zabs

+1

यह आपके आवेदन पर निर्भर करता है, मेरी राय में सबसे बड़ा परिवर्तन यह है कि कुछ फ़ंक्शंस अब ** झूठी ** की बजाय ** शून्य ** लौटाते हैं। यदि आपका ऐप तर्क उस पर निर्भर करता है, तो आपके पास उन फ़ंक्शन नामों के लिए एक अच्छा समय होगा। मेरा मानना ​​है कि यह उन्नयन के लिए सबसे अधिक सलाह गाइड है: [सीआई 3.00 में अपग्रेड करें] (https://www.chuongduong.net/ci3/installation/upgrade_300.html) –

+0

इसके लिए धन्यवाद - मैं इसे जल्द ही कोशिश करने जा रहा हूं लेकिन किसी भी तरह से आपको प्रदान की गई उपयोगी जानकारी की मात्रा के लिए आपको बक्षीस मिलेगा - धन्यवाद फिर से :) – Zabs

संबंधित मुद्दे