Ruby on Rails 5.2 - ActionDispatch::Session::CookieStore

वर्ग ActionDispatch :: सत्र :: CookieStore




ruby

वर्ग ActionDispatch :: सत्र :: CookieStore

जनक:
ActionDispatch :: सत्र :: AbstractStore

यह कुकी-आधारित सत्र स्टोर रेल डिफ़ॉल्ट है। यह विकल्पों की तुलना में नाटकीय रूप से तेज है।

आमतौर पर सत्रों में अधिकांश user_id और फ़्लैश संदेश होते हैं; दोनों 4K कुकी आकार सीमा के भीतर फिट हैं। यदि आप 4K से अधिक डेटा संग्रहीत करने का प्रयास करते हैं, तो CookieOverflow अपवाद उठाया गया है।

भंडारण के लिए उपयोग किया जाने वाला कुकी जार आपके एप्लिकेशन के कॉन्फ़िगरेशन को देखते हुए स्वचालित रूप से सबसे अच्छा संभव विकल्प होने के लिए कॉन्फ़िगर किया गया है।

यदि आपके पास केवल secret_token सेट है, तो आपके कुकीज़ पर हस्ताक्षर किए जाएंगे, लेकिन एन्क्रिप्ट नहीं किए गए हैं। इसका मतलब है कि कोई उपयोगकर्ता आपके ऐप की गुप्त कुंजी को जाने बिना अपने user_id को बदल नहीं सकता है, लेकिन आसानी से अपने user_id पढ़ सकता है। यह रेल 3 ऐप्स के लिए डिफ़ॉल्ट था।

आपके ऐप्स secret_key_base का उपयोग करके आपकी कुकी एन्क्रिप्ट हो जाएंगे। यह हस्ताक्षरित कुकीज़ की तुलना में एक कदम आगे जाता है कि एन्क्रिप्टेड कुकीज़ को उपयोगकर्ताओं द्वारा बदला या पढ़ा नहीं जा सकता है। यह रेल 4 में शुरू होने वाला डिफ़ॉल्ट है।

अपने सत्र स्टोर को config/initializers/session_store.rb में कॉन्फ़िगर करें:

Rails.application.config.session_store :cookie_store, key: '_your_app_session'

डिफ़ॉल्ट रूप से, आपका गुप्त कुंजी आधार परीक्षण और विकास के वातावरण में आपके आवेदन नाम से लिया गया है। अन्य सभी वातावरणों में, इसे config/credentials.yml.enc फ़ाइल में एन्क्रिप्ट किया गया है।

यदि आपके आवेदन को रेल 5.2 डिफॉल्ट के लिए अपडेट नहीं किया गया था, तो secret_key_base पुराने कॉन्फिगर config/secrets.yml फाइल में मिल जाएगा।

ध्यान दें कि आपके secret_key_base को बदलने से सभी मौजूदा सत्र अमान्य हो जाएंगे। इसके अतिरिक्त, आपको यह सुनिश्चित करने के लिए ध्यान रखना चाहिए कि आप इसे बदलने से पहले बाहरी एप्लिकेशन या जावास्क्रिप्ट में अपने ऐप द्वारा उत्पन्न हस्ताक्षरित कुकीज़ को डिकोड करने की क्षमता पर भरोसा नहीं कर रहे हैं।

क्योंकि CookieStore रैक :: सत्र :: सार :: का विस्तार करता है, वहाँ वर्णित विकल्पों में से कई का उपयोग सत्र कुकी को उत्पन्न करने के लिए अनुकूलित करने के लिए किया जा सकता है। उदाहरण के लिए:

Rails.application.config.session_store :cookie_store, expire_after: 14.days

निर्माण के 14 दिनों के बाद स्वचालित रूप से समाप्त करने के लिए सत्र कुकी सेट करेगा। अन्य उपयोगी विकल्पों में शामिल हैं :key :secure और :httponly

पब्लिक क्लास के तरीके

नया (एप्लिकेशन, विकल्प = {}) स्रोत दिखाएं
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 54
def initialize(app, options = {})
  super(app, options.merge!(cookie_only: true))
end
सुपरक्लास विधि एक्शनडिसपैच :: सत्र :: संगतता.न्यू

सार्वजनिक प्रवृत्ति के तरीके

delete_session (req, session_id, विकल्प) स्रोत दिखाएं
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 58
def delete_session(req, session_id, options)
  new_sid = generate_sid unless options[:drop]
  # Reset hash and Assign the new session id
  req.set_header("action_dispatch.request.unsigned_session_cookie", new_sid ? { "session_id" => new_sid } : {})
  new_sid
end
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 65
def load_session(req)
  stale_session_check! do
    data = unpacked_cookie_data(req)
    data = persistent_session_id!(data)
    [data["session_id"], data]
  end
end