2011-02-25 13 views
5

एक एक रेल 2.3.8 सत्र कुकी का उदाहरणरेल सत्र सत्र कुकी 6464 पूरी तरह से डीकोड क्यों नहीं हो सकती है?

BAh7BzoLZm9vYmFyaQc6D3Nlc3Npb25faWQiJWIzOTRhNGFkNDg1Mjk2NGM2NDU1Mzc4ZTM0YjkzZjE2--67046ba78aa6d656ec7c64e73aac156f5e503627 

तो मैं दूसरे भाग मान (-- के बाद) चेकसम है, और अगर एक Base64 डिकोड किया जाता है:

$ script/console 
Loading development environment (Rails 2.3.8) 

> Base64.decode64("BAh7BzoLZm9vYmFyaQc6D3Nlc3Npb25faWQiJWIzOTRhNGFkNDg1Mjk2NGM2NDU1Mzc4ZTM0YjkzZjE2") 
=> "\004\b{\a:\vfoobari\a:\017session_id\"%b394a4ad4852964c6455378e34b93f16" 

> puts Base64.decode64("BAh7BzoLZm9vYmFyaQc6D3Nlc3Npb25faWQiJWIzOTRhNGFkNDg1Mjk2NGM2NDU1Mzc4ZTM0YjkzZjE2") 
{: 
    foobari:session_id"%b394a4ad4852964c6455378e34b93f16 

माना जाता है कि foobar का मान 2 होना चाहिए और यह नहीं दिखाया जाएगा ... और session_id क्या है यदि यह कुकी पर आधारित है - इसे id क्यों चाहिए?

उत्तर

8

-- के बाद कोड एक SHA है, जो एप्लिकेशन में परिभाषित सत्र खंड के साथ हैश किया गया है।

और here about the ID

संपादित करें:

Marshal.load(Base64.decode64("BAh7BzoLZm9vYmFyaQc6D3Nlc3Npb25faWQiJWIzOTRhNGFkNDg1Mjk2NGM2NDU1Mzc4ZTM0YjkzZjE2--67046ba78aa6d656ec7c64e73aac156f5e503627".split('--').first)) 

=> {:foobar=>2, :session_id=>"b394a4ad4852964c6455378e34b93f16"} 
+0

इसलिए जब डिकोडिंग, '--' और हेक्स स्ट्रिंग के बाद हटा दें। तो इसे ठीक से बाहर आना चाहिए, है ना? –

+0

@ 動靜 能量 हां और फिर आपको इसे मार्शल के साथ deserialize करना होगा। मैंने अपना जवाब संपादित कर लिया है। – pseidemann

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