Ruby on Rails 5.2 - ActionDispatch::Cookies::ChainedCookieJars

मॉड्यूल ActionDispatch :: कुकीज़ :: ChainedCookieJars




ruby

मॉड्यूल ActionDispatch :: कुकीज़ :: ChainedCookieJars

कुकीज जार में शामिल करें ताकि पीछा करने की अनुमति दी जा सके, जैसे कुकीज़.परमानेंट.साइन।

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

एन्क्रिप्टेड () शो स्रोत
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 245
def encrypted
  @encrypted ||= EncryptedKeyRotatingCookieJar.new(self)
end

एक जार देता है जो ग्राहक को भेजने से पहले कुकी मूल्यों को स्वचालित रूप से एन्क्रिप्ट करेगा और उन्हें पढ़ने के लिए डिक्रिप्ट करेगा। यदि उपयोगकर्ता (या एक 3 पार्टी) द्वारा कुकी के साथ छेड़छाड़ की गई थी, तो nil वापस कर दी जाएगी।

यदि secret_key_base और secret_key_base (पदावनत) दोनों सेट किए गए हैं, तो पुराने प्रमुख जनरेटर के साथ हस्ताक्षरित विरासत कुकीज़ को पारदर्शी रूप से उन्नत किया जाएगा।

यदि config.action_dispatch.encrypted_cookie_salt और config.action_dispatch.encrypted_signed_cookie_salt दोनों सेट हैं, तो HMAC AES-256-CBC के साथ एन्क्रिप्टेड लीगेसी कुकीज़ पारदर्शी रूप से उन्नत हो जाएंगी।

इस जार के लिए आवश्यक है कि आप अपने ऐप के secret_key_base पर सत्यापन के लिए एक उपयुक्त रहस्य सेट करें।

उदाहरण:

cookies.encrypted[:discount] = 45
# => Set-Cookie: discount=DIQ7fw==--K3n//8vvnSbGq9dA--7Xh91HfLpwzbj1czhBiwOg==; path=/

cookies.encrypted[:discount] # => 45
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 205
def permanent
  @permanent ||= PermanentCookieJar.new(self)
end

एक ऐसा जार लौटाता है जो निर्धारित कुकीज को स्वचालित रूप से 20 साल की समाप्ति तिथि के लिए सेट करेगा। उदाहरण:

cookies.permanent[:prefers_open_id] = true
# => Set-Cookie: prefers_open_id=true; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT

यह जार केवल लिखने के लिए है। आप नियमित एक्सेसर के माध्यम से स्थायी कुकीज़ पढ़ेंगे।

यह जार हस्ताक्षर किए गए जार के साथ-साथ चाइनिंग की अनुमति देता है, इसलिए आप स्थायी, हस्ताक्षरित कुकीज़ सेट कर सकते हैं। उदाहरण:

cookies.permanent.signed[:remember_me] = current_user.id
# => Set-Cookie: remember_me=BAhU--848956038e692d7046deab32b7131856ab20e14e; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
हस्ताक्षरित () स्रोत दिखाएं
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 224
def signed
  @signed ||= SignedKeyRotatingCookieJar.new(self)
end

एक जार देता है जो कुकी मूल्य का एक हस्ताक्षरित प्रतिनिधित्व स्वचालित रूप से उत्पन्न करेगा और इसे फिर से कुकी से पढ़ते समय सत्यापित करेगा। यह उन मानों के साथ कुकीज़ बनाने के लिए उपयोगी है जिन्हें उपयोगकर्ता को बदलना नहीं है। यदि एक हस्ताक्षरित कुकी को उपयोगकर्ता (या एक 3 पार्टी) द्वारा छेड़छाड़ किया गया था, तो nil वापस कर दिया जाएगा।

यदि secret_key_base और secret_key_base (पदावनत) दोनों सेट किए गए हैं, तो पुराने प्रमुख जनरेटर के साथ हस्ताक्षरित विरासत कुकीज़ को पारदर्शी रूप से उन्नत किया जाएगा।

इस जार के लिए आवश्यक है कि आप अपने ऐप के secret_key_base पर सत्यापन के लिए एक उपयुक्त रहस्य सेट करें।

उदाहरण:

cookies.signed[:discount] = 45
# => Set-Cookie: discount=BAhpMg==--2c1c6906c90a3bc4fd54a51ffb41dffa4bf6b5f7; path=/

cookies.signed[:discount] # => 45
हस्ताक्षर किए गए_or_encrypted () स्रोत दिखाएं
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 251
def signed_or_encrypted
  @signed_or_encrypted ||=
    if request.secret_key_base.present?
      encrypted
    else
      signed
    end
end

signed या encrypted जार लौटाता है, अगर encrypted तो secret_key_base सेट किया जाता है। ActionDispatch::Session::CookieStore द्वारा उपयोग किया ActionDispatch::Session::CookieStore कुकी स्टोर नई कुकी स्टोर शुरू करने की आवश्यकता से बचने के लिए।