2011-01-19 144 views
6

如何手动删除由asp.net身份验证子站点设置的cookie?手动删除asp.net身份验证Cookie

该cookie设置为setter.test.com;

<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的应用程序,这是我注销(删除该cookie)代码:

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); 
      } 
} 

这是行不通的。

回答

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

如果我不能硬编码顶级域名? – 2011-01-19 18:40:13

+0

您需要从配置中读取它,或者以某种方式确定它。你必须拥有它,你可以从请求cookie中获得它...... – 2011-01-19 19:07:26