2011-01-19 15 views
6

एएसपीनेट प्रमाणीकरण के लिए उप डोमेन द्वारा सेट की गई कुकी को मैन्युअल रूप से कैसे हटाया जाए?मैन्युअल रूप से एएसपीनेट प्रमाणीकरण कुकीज़

कुकी setter.test.com पर स्थापित किया गया था;

public ActionResult LogOut() 
{ 
     //Manually remove the cookie created by 3rd party authentication 
      if (Request.Cookies[".ASPXAUTH"] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(".ASPXAUTH"); 
       myCookie.Expires = DateTime.Now.AddDays(-1d); 
       Response.Cookies.Add(myCookie); 
      } 
} 

यह काम नहीं करता:

<authentication mode="Forms"> 
    <forms domain="test.com" loginUrl="Default.aspx" protection="All" path="/" requireSSL="false" timeout="45" name=".ASPXAUTH" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/> 
</authentication> 

getter.test.com पर अपने आवेदन में, इस तरह लॉग आउट (उस कुकी को हटाने) के लिए मेरे कोड है।

उत्तर

4

एक छोटा सा परिवर्तन और आपको जाने के लिए सेट किया जाना चाहिए।

public ActionResult LogOut() 
{ 
    //Manually remove the cookie created by 3rd party authentication 
     if (Request.Cookies[".ASPXAUTH"] != null) 
     { 
      HttpCookie myCookie = new HttpCookie(".ASPXAUTH"); 
      myCookie.Expires = DateTime.Now.AddDays(-1d); 
      myCookie.Domain = "test.com"; 
      Response.Cookies.Add(myCookie); 
     } 
} 

आपको यह सुनिश्चित करना होगा कि डोमेन दोनों पर समान है।

+0

देखें क्या होगा यदि मैं मुश्किल कोड नहीं कर सकते शीर्ष स्तर डोमेन? –

+0

आपको इसे किसी कॉन्फ़िगरेशन से पढ़ना होगा, या इसे किसी तरीके से निर्धारित करना होगा। आपके पास यह होना चाहिए, आप अनुरोध कुकी से इसे पकड़ने में सक्षम हो सकते हैं ... –

+0

प्रति [आरएफसी 6265] (http://www.rfc-editor.org/rfc/rfc6265.txt) धारा 4.2.2: " ध्यान दें कि कुकी विशेषताओं को वापस नहीं किया जाता है। विशेष रूप से, जब कोई कुकी समाप्त हो जाती है, तो सर्वर अकेले कुकी हेडर से निर्धारित नहीं कर सकता है, जिसके लिए कुकी होस्ट मान्य होती है, जिसके लिए कुकी वैध है, या कुकी को सेट किया गया था या नहीं सिक्योर या एचटीपी केवल विशेषताएं। " – HABO

3

के बाद से आप केवल उस नाम से एक कुकी, डोमेन की परवाह किए बिना हो सकता है, मुझे लगता है कि है यह करने के लिए सिफारिश की रास्ता:

FormsAuthentication.SignOut(); 

http://support.microsoft.com/kb/910443

+0

आपके पास .something.com और www.something.com के लिए समान नाम कुकी हो सकती है। Www12 के तहत साइनऑट को कॉल करते समय आप एक को हटा देंगे लेकिन दूसरे को नहीं हटाएंगे। सच्ची कहानी –

+0

फॉर्म नहीं प्रमाणीकरण केवल वर्तमान एप्लिकेशन पर लागू होता है? तो अगर www.something.com ने एक अलग एप्लिकेशन रूट की ओर इशारा किया तो आपको एक अलग साइनइन मिलेगा? कभी कोशिश नहीं की। –

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