2012-04-27 97 views
2

我可以使用JavaScript删除ASP.NET身份验证Cookie(.ASPXAUTH)吗?我想在我的ASP.NET/JavaScript移动应用程序上实现注销功能,而无需往返于服务器。但是,这种方法由于某种原因不起作用。我可以使用JavaScript删除ASP.NET身份验证Cookie(.ASPXAUTH)吗?

document.cookie = '.ASPXAUTH=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 

我该怎么办?

谢谢。

更新:好的,我读了一篇关于HttpOnly cookies的文章,它就是这种情况。为了使该cookie不是仅Http,以下行添加到web.config文件(的System.Web部分):

<httpCookies httpOnlyCookies="false"/> 

UPDATE:以上方法不起作用 - ASP.NET简单地忽略该指令。我终于实现了这个技巧在Global.asax中:

protected void Application_EndRequest(Object sender, EventArgs e) 
{ 
    string cookieName = System.Web.Security.FormsAuthentication.FormsCookieName; 
    if (Response.Cookies.Count > 0) 
    { 
     foreach (string s in Response.Cookies.AllKeys) 
     { 
      if (s == cookieName) 
      { 
       Response.Cookies[cookieName].HttpOnly = false; 
      } 
     } 
    } 
} 
+1

我说你要注销的服务器上为好,以清理会话状态和这样的。 – 2012-04-27 21:42:48

+0

嗯,我不使用会话状态,因为它是一个JavaScript客户端应用程序。我使用服务器部分进行身份验证和REST API。 – 2012-04-27 21:48:57

+0

@Alex Avrutin感谢您的快速更新:)。你可以把它作为你自己问题的答案发布并接受它。 – Li0liQ 2012-04-27 21:52:30

回答

0

你不需要删除cookie以signout用户,只需设置“过期”值昨日,只听轰的一声,用户有已注销。

考虑这个非常有用的博客文章:Using cookies in Javascript part 1

+3

谢谢,但如果cookie是HttpOnly,我将无法读取它,并且我将无法修改'expires'值。 – 2012-04-28 16:46:35

相关问题