2016-06-21 8 views
9

मुझे मुख्य डोमेन और सभी सबडोमेन के बीच सत्र कुकी साझा करने की आवश्यकता है। मैं दो NodeJS सेवाओं expressjs ढांचे पर आधारित है:सबडोमेन कुकी उपलब्ध होने के लिए एप्लिकेशन को कॉन्फ़िगर कैसे करें?

// example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

// blog.example.local 

    ... 
    app.use(session({ 
     // what should I write here? <--------- 
    })); 

तो मेरे सवाल का क्या है मैं blog.example.local के सत्र विन्यास में लिखने मौजूदा example.local की कुकी तक पहुँच प्राप्त करने चाहिए?

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

// blog.example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

यह पर्याप्त है या मैं इसे का अनुकूलन कर सकते हैं: @yeiniel सुझाव है के रूप में, मैं सिर्फ एक ही config blog.example.local के लिए निम्नलिखित की तरह इस्तेमाल करना चाहिए?

उत्तर

6

असल में आपको दो चीजों की आवश्यकता है: सभी सर्वरों पर समान सेटिंग्स का उपयोग करें (केवल कुकी सेटिंग्स नहीं बल्कि सभी सत्र सेटिंग्स में स्टोर शामिल है) और साइट के बीच सामान्य डोमेन पर कुकी डोमेन कॉन्फ़िगरेशन बिंदु सुनिश्चित करें।

+0

तो मुझे 'example.local' से' blog.example.local' तक सेटिंग्स कॉपी और पेस्ट करने की आवश्यकता है? – Erik

+0

हाँ, बस यही। – yeiniel

1

मैं वर्तमान में एक समान सेटअप प्रबंध कर रहा हूँ सभी ऐप्स को आप स्थानीय होस्ट का उपयोग करने के अपने सत्र डेटा रखने के लिए, विशेष रूप से अगर क्षुधा अलग सर्वर पर कर रहे हैं नहीं कर सकेंगे सत्र

app.use(session({ 
store: redisStore, 
secret: config.secret, 
resave: true, 
rolling: true, 
saveUninitialized: false, 
name: config.cookie_name, 
cookie: { 
    domain: config.cookie_domain_name, \\ .website.tld 
    secure: false 
} 

के लिए एक ही सेटिंग है। आपको सत्र डेटा के लिए केंद्रीय संग्रहण की आवश्यकता होगी, जो सभी ऐप्स एक्सेस कर सकते हैं।

+0

हाँ मुझे पता है कि मुझे सत्र के लिए भंडारण को अलग करने की आवश्यकता है, लेकिन अब मेरे सभी सबडोमेन एकल मशीन पर रहते हैं। तो बुनियादी सवाल सत्र कॉन्फ़िगरेशन के बारे में था लेकिन पॉइंटिंग के लिए धन्यवाद! @ ललित गोस्वामी के जवाब के बारे में आप क्या कहते हैं? – Erik

+0

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

2

मुझे लगता है कि अपने कुकी मिडलवेयर में विशेषता के लिए example.local

blog.example.local और

cookie: { 
     domain: "example.local", 
     path:'/' 
} 

के लिए इस तरह होना चाहिए,

cookie: { 
     domain: ".example.local", 
     path:'/' 
} 

आशा है कि यह आपको काम करेगा।

+0

क्या आप निश्चित हैं? मैंने पढ़ा है कि अगर मुझे सभी सामान्य डोमेन और सबडोमेन के लिए कुकी साझा करने की आवश्यकता है तो मुझे 'डोमेन:' bexample.local " – Erik

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