2014-03-25 51 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

相关问题