मैंने यह किया है, लेकिन यह बातें
की अपनी कांटे बनाने की आवश्यकता होती है सबसे पहले आप सत्र कुंजी एक ही नाम बनाने की जरूरत है। यह सबसे आसान काम है।
अगला मैंने रेडिस-स्टोर मणि का एक कांटा बनाया और जहां मार्शलिंग संशोधित हुई। मुझे दोनों तरफ जेसन से बात करने की ज़रूरत है क्योंकि जावास्क्रिप्ट के लिए रूबी स्टाइल मार्शल मॉड्यूल ढूंढना आसान नहीं है। The file where I alter marshalling
मुझे कनेक्ट के सत्र मिडलवेयर हिस्से को प्रतिस्थापित करने की भी आवश्यकता है। बनाया गया हैश बहुत विशिष्ट है और एक रेल बनाता है जो मेल नहीं खाता है। मुझे इसे काम करने के लिए आपको छोड़ना होगा क्योंकि एक अच्छा तरीका हो सकता है। मैं कनेक्ट फोर्क हो सकता था, लेकिन इसके बजाय मैंने कनेक्ट> मिडलवेयर> सत्र आउट की एक प्रति निकाली और मुझे अपना खुद का उपयोग करना पड़ा।
आप देखेंगे कि मूल चर में मूल जोड़ता है जो रेल संस्करण में मौजूद नहीं है। इसके अलावा आपको उस मामले को संभालने की आवश्यकता है जब रेल ने नोड के बजाय सत्र बनाया है, यही जेनरेटर कुकी काम करता है।
/***** ORIGINAL *****/
// session hashing function
store.hash = function(req, base) {
return crypto
.createHmac('sha256', secret)
.update(base + fingerprint(req))
.digest('base64')
.replace(/=*$/, '');
};
// generates the new session
store.generate = function(req){
var base = utils.uid(24);
var sessionID = base + '.' + store.hash(req, base);
req.sessionID = sessionID;
req.session = new Session(req);
req.session.cookie = new Cookie(cookie);
};
/***** MODIFIED *****/
// session hashing function
store.hash = function(req, base) {
return crypto
.createHmac('sha1', secret)
.update(base)
.digest('base64')
.replace(/=*$/, '');
};
// generates the new session
store.generate = function(req){
var base = utils.uid(24);
var sessionID = store.hash(req, base);
req.sessionID = sessionID;
req.session = new Session(req);
req.session.cookie = new Cookie(cookie);
};
// generate a new cookie for a pre-existing session from rails without session.cookie
// it must not be a Cookie object (it breaks the merging of cookies)
store.generateCookie = function(sess){
newBlankCookie = new Cookie(cookie);
sess.cookie = newBlankCookie.toJSON();
};
//... at the end of the session.js file
// populate req.session
} else {
if ('undefined' == typeof sess.cookie) store.generateCookie(sess);
store.createSession(req, sess);
next();
}
मुझे आशा है कि यह आपके लिए काम करता है। यह मुझे बात करने के लिए चारों ओर खोदने के लिए काफी कुछ ले गया।
मुझे जेसन में संग्रहीत फ़्लैश संदेशों के साथ-साथ एक समस्या भी मिली। उम्मीद है कि आपको वह नहीं मिला है। फ्लैश संदेशों में एक विशेष ऑब्जेक्ट संरचना होती है जो सीरियलाइजिंग करते समय जेसन उड़ जाती है। जब सत्र से फ़्लैश संदेश बहाल किया जाता है तो आपके पास उचित फ़्लैश ऑब्जेक्ट नहीं हो सकता है। मुझे इसके लिए पैच करने की भी आवश्यकता थी।
स्रोत
2012-05-02 23:41:49
रेल/रूबी कभी-कभी वस्तुओं को क्रमबद्ध करने के लिए मार्शलिंग का उपयोग करता है। यदि ऐसा है, तो आप उन्हें आसानी से नोड में पुनर्प्राप्त नहीं कर पाएंगे ... – sailor
@ सेलर अगर ऐसा होता है, तो मैं सिर्फ JSON को सहेज सकता हूं :) –