2010-03-08 10 views
115

मुझे इसे कहीं भी नहीं मिल रहा है ... मैं रेल में उपयोगकर्ता के सत्र को कैसे हटा/नष्ट/रीसेट/खाली/साफ़ कर सकता हूं? सिर्फ एक मूल्य नहीं बल्कि पूरी चीज ..रेल में सत्र को खाली/नष्ट कैसे करें?

उत्तर

178

पूरी चीज को साफ़ करने के लिए एक नियंत्रक में reset_session विधि का उपयोग करें। http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

पुनः निर्धारित करता है सब भीतर और एक नया सत्र आरंभ वस्तु संग्रहीत वस्तुओं बाहर साफ़ करके सत्र:

reset_session 

यहाँ इस पद्धति पर प्रलेखन है।

शुभकामनाएँ!

+1

डेटाबेस के आधार पर सत्र के लिए (जो आपको चाहिए शायद उपयोग करें) आप एक प्रश्न के माध्यम से समाप्त हो सकते हैं: http://guides.rubyonrails.org/security.html#session-expiry – m33lky

36

रेल में सत्र एक हैश ऑब्जेक्ट है। इसलिए समाशोधन हैश के लिए उपलब्ध कोई भी कार्य सत्रों के साथ काम करेगा।

session.clear 

या यदि विशिष्ट कुंजी नष्ट हो जाता है:

session.delete(key) 

रेल 3.2

+0

किसी के पास इस विधि की योग्यता पर कोई विचार है जो कि Gdeglin द्वारा अनुशंसित किया गया है? –

+2

इसका उपयोग तब किया जा सकता है जब आप अन्य पैरामीटर बनाए रखना चाहते हैं लेकिन एक विशेष कुंजी मान जोड़ी हटाएं। – Lavixu

+0

मुझे लगता है कि मैं 'session.clear' या' session = {} 'के उपयोग को रीसेट_शन के उपयोग के संदर्भ में संदर्भित कर रहा था। क्या वे समान हैं? –

5

केवल कुछ मापदंडों को खाली करने के में परीक्षण किया गया है, तो आप उपयोग कर सकते हैं:

[:param1, :param2, :param3].each { |k| session.delete(k) } 
5

को उपयोगकर्ता के सत्र को हटाएं

session.delete(:user_id) 
+0

सावधान, आप डेटाबेस से उपयोगकर्ता रिकॉर्ड को हटा सकते हैं! – Arthur

+0

@ आर्थर यह सच नहीं है। लेकिन आप केवल सत्र से उपयोगकर्ता_आईडी कुंजी को हटा देंगे और पूरे सत्र –

2

अपने ApplicationController में यह कोड शामिल

def reset_session 
    @_request.reset_session 
end 

(न पता के रूप में यह मेरी समस्या तय क्यों बस ऊपर कोई भी इस कोड उल्लेख) http://apidock.com/rails/ActionController/RackDelegation/reset_session

+0

केवल मेरे लिए काम नहीं करेंगे। – amingilani

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