2010-02-24 20 views
17

निर्दिष्ट करके डिफ़ॉल्ट रूप से, ASP.NET अपनी कुकीज़ को "mydomain.com" का उपयोग करने के लिए सेट करेगा। मैं उन्हें "www.mydomain.com" का उपयोग करना पसंद करूंगा, ताकि मेरे पास अन्य "sub.mydomain.com" सबडोमेन हो सकें जो कुकी-मुक्त हैं।एएसपी.NET सत्र कुकीज़ - आधार डोमेन

मैंने सत्र और कुकी ऑब्जेक्ट्स में कुछ खोद दिया है, और जब मैं एक कुकी के लिए डोमेन को सेट करने का तरीका ढूंढ सकता हूं, तो मुझे इसे सभी सत्र कुकीज़ के लिए सेट करने का कोई तरीका नहीं दिखता है।

कोई भी विचार?

+0

यह मेरे अनुभव के बिल्कुल विपरीत है। नए सत्र कुकीज़ को मेरे प्रत्येक सबडोमेन में से एक बनाया जा रहा है। शायद यह एएसपी.नेट के एक नए संस्करण के साथ बदल गया है? मैं .NET 4. –

उत्तर

19

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

यह <system.web> के तहत sessionState तत्व पर web.config में कॉन्फ़िगर किया गया है।

<sessionState sessionIDManagerType="MySessionIDManager" /> 

और कार्यान्वयन।

public class MySessionIDManager: SessionIDManager, ISessionIDManager 
{ 
    void ISessionIDManager.SaveSessionID(HttpContext context, string id, out bool redirected, out bool cookieAdded) 
    { 
     base.SaveSessionID(context, id, out redirected, out cookieAdded); 

     if (cookieAdded) { 
      var name = "ASP.NET_SessionId"; 
      var cookie = context.Response.Cookies[ name ]; 
      cookie.Domain = "example.com"; 
     } 
    } 
} 
+1

वास्तव में बहुत अच्छा लग रहा है, लेकिन यह मेरे लिए काम नहीं किया। यह कोड सभी सबडोमेन के लिए एक ही सत्रिक बनाए रखने में सक्षम था, लेकिन सत्रों का डेटा सफलतापूर्वक पढ़ा नहीं गया था। – st78

+0

मेरे लिए बहुत अच्छा काम किया! धन्यवाद। – spoulson

+0

क्या आपको 'GetSessionId() 'और' RemoveSessionId() '??? – user2173353

1

सत्र केवल एक कुकी का उपयोग करता है, तो आप केवल ASP.NET_SessionId कुकी के लिए डोमेन क्यों सेट नहीं करते हैं?

+0

5 का उपयोग कर रहा हूं, वास्तव में, यदि आप _utm ... वाले शामिल हैं। उन सभी को cdn.mysite.com पर प्रत्येक छवि अनुरोध के लिए भेजा जाता है। यह अच्छा होगा अगर मुझे बाहर जाने और mysitecdn.com को उस से बचने के लिए पंजीकरण करने की आवश्यकता नहीं थी। –

+0

"कुकीज डोमेन" पंजीकृत करना इतना असामान्य नहीं है: [इसलिए यह उदाहरण के लिए किया गया था] (http://sstatic.net/)। – scherand

9

मुझे पता है यह एक पुराने सवाल है, लेकिन आप कोड में यह कर के बजाय httpCookies विन्यास खंड के domain विशेषता का उपयोग कर सकता है?

<httpCookies domain="String" 
      httpOnlyCookies="true|false" 
      requireSSL="true|false" /> 
+1

सत्र कुकी – Tarnschaf

+0

पर सही प्रतीत नहीं होता है ठीक है, काफी उचित :) धन्यवाद। –

+0

+1 यह मेरे लिए काम किया! यह सत्र और ऑथ कुकीज़ दोनों को प्रभावित करता है। – jkoreska

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