2012-04-27 96 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

相關問題