2014-03-25 55 views
0

當我的網頁在任何瀏覽器中關閉的標籤頁時,我想刪除用戶驗證。而當用戶加載我的網頁在新標籤頁,他應該不會看到任何他的細節,直到日誌中。在瀏覽器中關閉標籤時驗證清除

我用

FormsAuthentication.SetAuthCookie("E|" + contct.EMailAddress1, false); 

但只清除完成時瀏覽器關閉。我想清除選項卡關閉時的情況。

我可以在asp.net用什麼,C#

回答

1

你可以嘗試刪除使用javascript onunload事件餅乾。

<body onunload="deleteAllCookies()"> 

將調用瀏覽器的標籤密切javascript函數deleteAllCookies(),並且在功能上刪除所有Cookie,將清除認證

<script> 
     function deleteAllCookies() { 
      var cookies = document.cookie.split(";"); 

      for (var i = 0; i < cookies.length; i++) { 
       var cookie = cookies[i]; 
       var eqPos = cookie.indexOf("="); 
       var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; 
       document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; 
      } 
     } 
</script> 

編輯

你的問題是要明確身份驗證時,標籤在瀏覽器中關閉。如問題所示,您正在使用FormsAuthentication.SetAuthCookie。 這就是爲什麼我建議使用javascript onunload事件刪除cookies,就像我在回答中一樣。因此,當瀏覽器中的標籤關閉時,它將清除身份驗證, 不會考慮站點的不同階段(即回答問題)的另一個選項卡。

如果您希望在具有不同站點階段的其他選項卡上維護身份驗證,則必須使用cookie在瀏覽器窗口(以及選項卡)之間進行通信。 如果您發現有同一網站的另一個標籤,請勿清除Cookie。你可以在javascript函數中做到這一點。 希望this link會幫助你。或嘗試使用Google搜索。

+0

如果我的網站有兩個不同階段的標籤,如果關閉一個,其他人也會失去認證。 – Mathee

+0

編輯我的答案 – pravprab

相關問題