रेल कुकीज़ के लिए प्रारंभ तिथि और समाप्ति तिथि निर्धारित करें


83

मैं एक निश्चित तारीख को शुरू करने और / या समाप्त करने के लिए रेल कुकी कैसे सेट कर सकता हूं?

जवाबों:


200

रेल के दस्तावेज 5 के अंश :

कुकीज़ एक्शनकंट्रोलर # कुकीज़ के माध्यम से पढ़ी और लिखी गई हैं।

पढ़ी जा रही कुकीज़ अनुरोध के साथ प्राप्त की गई हैं, जो कुकीज़ लिखी जा रही हैं उन्हें प्रतिक्रिया के साथ बाहर भेजा जाएगा। कुकी को पढ़ने से कुकी ऑब्जेक्ट अपने आप वापस नहीं मिलता है, बस इसका मूल्य है।

लेखन के उदाहरण:

# Sets a simple session cookie.
# This cookie will be deleted when the user's browser is closed.
cookies[:user_name] = "david"

# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }

# Sets a cookie that expires at a specific time.
cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 5) }

# Sets a "permanent" cookie (which expires in 20 years from now).
cookies.permanent[:login] = "XJ-122"

[...]

कुकीज़ सेट करने के लिए विकल्प प्रतीक हैं:

  • :expires - जिस समय यह कुकी समाप्त होती है, समय या ActiveSupport :: अवधि ऑब्जेक्ट के रूप में।

[...]


23
डॉक्स में यह सब है: api.rubyonrails.org/classes/ActionDispatch/Cookies.html
Guilherme Garnier

8
@ सेंथिल, यदि आपको किसी अन्य लेख (इस मामले में 'के रूप में' रेल डॉक्स से 'कुछ मिल रहा है), तो कृपया मूल का संदर्भ दें।
वहीँ मीरा

1
यह भी: समय सीमा समाप्त होने का विकल्प समाप्त हो जाना चाहिए। cookies[:login] = { value: "JX-122", expires: 3.months }त्रुटि बढ़ाएगा। लेकिन यह नहीं होगा। cookies[:login] = { value: "JX-122", expires: 3.months.from_now } विवरण के लिए देखें github.com/rack/rack/issues/864#issuecomment-104706555
zhisme

18

आपका प्रश्न इस प्रश्न से संबंधित हो सकता है: मैं कैसे गतिशील रूप से रेल आधारित कुकी सत्र के लिए समाप्ति समय निर्धारित कर सकता हूं

स्लाइडशो को हटाने के लिए टिप्पणियों में से एक इंगित करता है :

".. यदि आपको अपने आवेदन में सभी नियंत्रकों के माध्यम से सत्रों के लिए समाप्ति की अवधि निर्धारित करने की आवश्यकता है, तो बस निम्न विकल्प को अपने कॉन्फिगरेशन / इंटेस्टाइज़र / session_store.rb फ़ाइल में जोड़ें:

:expire_after => 60.minutes

यदि आपको अलग-अलग नियंत्रकों या क्रियाओं में अलग-अलग समाप्ति समय सेट करने की आवश्यकता है, तो निम्न कोड का उपयोग क्रिया में करें या कुछ पहले_फिल्टर करें:

request.session_options = request.session_options.dup
request.session_options[:expire_after]= 5.minutes
request.session_options.freeze

हैश के डुप्लीकेशन की आवश्यकता केवल इसलिए है क्योंकि यह पहले से ही उस बिंदु पर जमे हुए है, भले ही कम से कम संशोधन हो: समय समाप्त हो सकता है। और त्रुटिपूर्ण रूप से काम करता है ... "

मुझे आशा है कि वह मदद करेंगे। :)


क्या यह ActiveRecord सत्र स्टोर के लिए भी किया जा सकता है?
लोहित एमवी

4

यह ध्यान देने योग्य है कि अभी के रूप में एक कुकी के लिए शुरुआती समय निर्धारित करना असंभव है। कुकी सेट हमेशा तुरंत सक्रिय होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.