2008-11-07 8 views
12

मैं एक आवेदन अनुप्रयोग का उपयोग करने के दौरान, एक उपयोगकर्ता सेमैं ASP.NET में एकाधिक सबडोमेन में सत्र कैसे साझा कर सकता हूं?

virginia.usa.com 

newyork.usa.com 

के लिए क्लिक करें सकते हैं जहां के बाद से मैं नहीं बल्कि नहीं एक नया सत्र हर बार एक उपयोगकर्ता बनाने के लिए इस्तेमाल करते हैं एक सबडोमेन से दूसरे में पार हो जाता है, एकाधिक सबडोमेन में सत्र जानकारी साझा करने का एक अच्छा तरीका क्या है?

उत्तर

35

आप ASP.NET और आईआईएस के साथ इस टैग किए गए, तो मैं मान लेंगे कि अपने वातावरण है। सुनिश्चित करें कि आपके पास यह आपके web.config में है:

<httpCookies domain=".usa.com"/> 

यदि आपके 2 सबडोमेन एक ही एप्लिकेशन पर मानचित्र हैं, तो आप कर चुके हैं। हालांकि, यदि वे अलग-अलग अनुप्रयोग हैं तो आपको कुछ अतिरिक्त कार्य करने की आवश्यकता होगी, जैसे SQL सर्वर आधारित सत्र संग्रहण (और संग्रहित प्रक्रियाओं को हैक करना सुनिश्चित करने के लिए कि सभी एप्लिकेशन समान सत्र डेटा साझा करते हैं) या HttpModule के साथ एप्लिकेशन नाम को अवरुद्ध करने के लिए , चूंकि साझा कुकीज़ और उसी मशीन कुंजी के साथ भी, 2 एप्लिकेशन अभी भी अपने सत्र डेटा के लिए 2 अलग-अलग स्टोर का उपयोग करेंगे।

+0

है धन्यवाद बहुत मैट! हमने पहले [इस समाधान] (http://stackoverflow.com/a/2174338/177710) का उपयोग किया है, लेकिन यह काम करने से आउटपुट कैशिंग रखा गया है। आपका समाधान हमारे आउटपुट कैश को आखिरकार काम करता है :-D – Oliver

+2

मैंने इसे अपने लोकहोस्ट (मेरी मेजबान फ़ाइल में सबडोमेन के साथ) पर कोशिश की और यह काम नहीं करता है। मैं सबडोमेन जुर्माना खींच सकता हूं, लेकिन, सत्र में खोए गए सत्र में एक से दूसरे परिणामों में जा रहा है और उपयोगकर्ता को फिर से लॉग इन करना है। कोई विचार? – Marc

+0

मैट ओएमजी कि कोड की एक पंक्ति ने मुझे पिछले सप्ताह बचाया होगा ...... –

0

आप PHP का उपयोग कर रहे हैं, एक हैक निम्न करने के लिए एक छोटे से स्क्रिप्ट शामिल करने के लिए (या दो) होगा:

1 क्रमानुसार अपने $ _SESSION सरणी 2 दर्रा कि एक छिपा इनपुट के रूप में स्ट्रिंग, POST का उपयोग करके अलग-अलग रूपों में उन सभी बटनों को अपने सभी लिंक बनाते हैं। 3 इसके अलावा अपने स्क्रिप्ट पता है कि क्या यह वर्तमान सत्र का उपयोग करें या unserialize $ _POST [ 'सत्र'] की जरूरत है यह बताने के लिए एक बूलियन छिपा इनपुट शामिल 4 तैनात यह आपकी साइट, चीजों को जहां उचित बुला भर

मैं नहीं होगा यदि सत्र को स्थानांतरित करने के लिए वास्तव में एक स्वीकृत तरीका है तो ऐसा करें। मुझे उम्मीद है कि आपने कम से कम कुकीज़ का उपयोग करने पर विचार किया है।

0

मुझे नहीं लगता कि विभिन्न सबडोमेन स्वयं और विभिन्न सत्रों को मजबूर करते हैं। उदाहरण के रूप में आपके द्वारा दिए गए दोनों यूआरएल आईआईएस में एक ही एप्लीकेशन को इंगित कर सकते हैं।

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

आशा है कि मदद करता है।

+0

समस्या ब्राउज़र में सत्र कुकी के साथ है, जो डोमेन-बाउंड –

3

अपने स्वयं के सत्र ट्रैक करें और एक उपयुक्त डोमेन सेटिंग के साथ कुकी का उपयोग करें, यानी। .usa.com

वैकल्पिक रूप से, यदि आप PHP का उपयोग कर रहे हैं, तो मेरा मानना ​​है कि सत्र कुकी की डिफ़ॉल्ट डोमेन सेटिंग को बदलने के लिए एक सेटिंग है, जो भी उपयोगी हो सकती है।

सेटिंग्स आप देख रहे हैं कर रहे हैं:

session.use_cookies = 1 
session.use_only_cookies = 1 
session.cookie_domain = .usa.com 
0

मैट का जवाब निश्चित रूप से जाने का तरीका है यदि आपके पास एक ही आईआईएस ऐप पर इंगित एकाधिक सबडोमेन हैं (जो वास्तव में अभी स्थिति है, वाइल्डकार्ड DNS का उपयोग करके और फिर प्राप्त करने वाले अंत में सबडोमेन 'स्नीफिंग' कर रहा है)।

हालांकि, मैं कुछ ऐसा जोड़ना चाहता था जिसे मैंने अनुभव किया हो यदि कोई यह पाया जा रहा है कि यह उनके लिए काम नहीं कर रहा है।

machineKey decryptionKey = "12 ... डी 1" validationKey = "D7..8B"

: httpCookies लाइन की स्थापना अकेले मेरे लिए ऐसा नहीं किया है, मैं अपने web.config फ़ाइल में एक machineKey प्रविष्टि जोड़ने के लिए किया था

विशेष रूप से अजीब है क्योंकि मैं वेब फार्म सेटअप में नहीं (जब तक कि एडब्ल्यूएस/ईसी 2 प्रभावी ढंग से इस तरह अभिनय नहीं कर रहा हो) .. जैसे ही मैंने ऐसा किया, यह एक चैंप की तरह काम करता था।

3

मैंने हाल ही में इस माध्यम से चलाया और कठिन तरीके से सीखा। लोकलहोस्ट वास्तव में एक टीएलडी माना जाता है। कुकी डोमेन को कम से कम एक दूसरे स्तर डोमेन - test.com की आवश्यकता होती है। यदि आप किसी डोमेन और उसके सभी उप-डोमेन के लिए कुकीज़ को काम करना चाहते हैं, तो '।' के साथ उपसर्ग करें। - .test.com।

स्थानीय रूप से चल रहे/डिबगिंग करते समय, स्थानीयहोस्ट का एक डोमेन सेट करना विफल हो जाएगा, और डोमेन ठीक से सेट होने पर भी विफल हो जाएगा क्योंकि दृश्य स्टूडियो डिफ़ॉल्ट रूप से लोकलहोस्ट का उपयोग करता है।

यह डिफ़ॉल्ट लोकहोस्ट परियोजना गुणों में बदला जा सकता है ताकि परियोजना वास्तव में कुकी डोमेन test.com पर चल सके। अनिवार्य रूप से, यदि ब्राउज़र में पता चलता है, तो आप इसे काम पर ला सकते हैं।

मेरे यहां मुद्दा यह प्रलेखित है: Setting ServiceStack Cookie Domain in Web.Config Causes Session Id to Change on Every Request

आशा इस मदद करता है।

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

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