2012-03-30 10 views
8

मैं रेल ऐप पर अपने रूबी में पासवर्ड प्रमाणीकरण के लिए 'devise' का उपयोग कर रहा हूं। एक बार जब मैं सफलतापूर्वक लॉगिन करता हूं और मैं अपना ब्राउज़र बंद करता हूं और एक नई ब्राउज़र विंडो खोलता हूं तो भी मैं लॉग इन हूं। आइए कहें कि मैं क्रोम का उपयोग कर रहा हूं, मैं क्रोम के सभी उदाहरण बंद करता हूं और फिर एक नया खोलता हूं। मैं अभी भी लॉग इन हूं। वही मामला है जब मैं आईई और फ़ायरफ़ॉक्स भी कर रहा हूं।ब्राउज़र पर डिवीजन सत्र को कैसे साफ़ करें?

मैं खिड़की के करीब और एक नई विंडो खोलने पर सर्वर और ब्राउज़र के बीच एक नया सत्र स्थापित करना चाहिए, है ना? यदि नहीं, तो मैं इसे कैसे प्राप्त करूं?

मैंने ब्राउज़र विंडो के onbeforeunload ईवेंट पर लॉगआउट बटन पर क्लिक करने का प्रयास किया था, लेकिन यह किसी भी फॉर्म सबमिट या लिंक क्लिक पर एप्लिकेशन के लॉगआउट के रूप में काम नहीं करता है।

window.onbeforeunload = function() { 
    $('#logout_cls').click(); 
}; 

और सत्र नियंत्रक से AJAX अनुरोध भेजने की कोशिश की सत्र समाशोधन के लिए कार्रवाई को नष्ट कर।

jQuery(window).bind(
    "close", 
    function(event) { 
      $.ajax({ 
      type: 'DELETE', 
      dataType: 'json', 
      url: $('#logout_cls').attr('href') 
      }); 
    }); 

लेकिन यह सब काम नहीं किया।

उत्तर

2

यह वास्तव में एक विशेषता है। फेसबुक और प्रमाणन के साथ बहुत सारी साइटें कुकीज़ के उपयोग के माध्यम से करती हैं।

डेविस का विकल्प याद रखने योग्य "उपयोगकर्ता को सहेजी गई कुकी से उपयोगकर्ता को याद रखने के लिए टोकन उत्पन्न करने और साफ़ करने का प्रबंधन करता है"। यदि आप इसे नहीं चाहते हैं, तो अपने उपयोगकर्ता मॉडल से remember_token स्ट्रिंग और remember_created_at डेटाटाइम को हटाएं और अपने लॉगिन पृष्ठ से Remember Me बटन हटा दें।

+0

मेरे पास पहले से ही याद रखने योग्य रणनीति अक्षम है। यहां बताया गया है कि मेरा मॉडल कैसा है: devise: डेटाबेस_authenticatable,: पुनर्प्राप्त करने योग्य,: ट्रैक करने योग्य,: मान्य करने योग्य विचार? – user380692

+0

'db \ schema.rb' पर जाएं। अपने उपयोगकर्ता टेबल की जांच करें। क्या इसमें 'remember_created_at' या' remember_token' नामक एक विशेषता है? यदि यह है, तो आपको उन्हें हटाना होगा। – Ashitaka

+0

क्या आपने इसे हल करने का प्रबंधन किया था? – Ashitaka

6

यह पता चला कि समस्या यह थी कि मेरा session_store कैसे कॉन्फ़िगर किया गया था।

MyApp::Application.config.session_store :active_record_store, 
{:key => '_my_app_session', :secret => '5xb5x1g92e965b95b16e49x79gxx9999', :expire_after => 2.hours} 

मैंने विकल्पों को हटा दिया और समस्या हल हो गई।

मेरे पास एक और सवाल है और यह विकल्प हटा रहा है क्या इसका कोई संभावित जोखिम है? मैं सत्र में किसी भी महत्वपूर्ण डेटा को स्पष्ट रूप से संग्रहीत नहीं कर रहा हूं लेकिन डेटा डालने में मैं खुलासा नहीं करना चाहता हूं।

मेरा ऐप कुछ दिनों में लाइव होगा, इसके लिए इसका उत्तर प्राप्त करना बहुत उपयोगी होगा। मैंने एक घंटे या उससे भी ज्यादा चीजों को गुमराह किया लेकिन बहुत ज्यादा भाग्य नहीं था।

धन्यवाद

+4

यदि आपके पास कोई अन्य प्रश्न है, तो आपको शायद इसे एक अलग प्रश्न के रूप में पोस्ट करना चाहिए (शायद इस के लिंक के साथ)। –

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