我希望在任何浏览器中关闭我的网页的标签时删除用户身份验证。当用户在新标签页中加载我的网页时,他不应该在登录之前看到他的任何细节。
我用过
FormsAuthentication.SetAuthCookie("E|" + contct.EMailAddress1, false);
但仅在完成浏览器关闭时才会清除。我希望在标签关闭时清除。
我可以在asp.net中使用什么,C#
答案 0 :(得分:3)
您可以尝试使用javascript onunload
事件删除Cookie。
<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
事件删除cookie的原因,如我的回答所示。因此,当浏览器中的标签关闭时,它将清除身份验证,
不会考虑具有不同网站阶段的另一个标签(即回答问题)。
如果要在具有不同站点阶段的其他选项卡上维护身份验证,则必须使用cookie在浏览器窗口(以及选项卡)之间进行通信。 如果您发现另一个具有相同网站的标签不清除Cookie。你可以在javascript函数中完成它。 希望this link会帮助你。或者尝试谷歌搜索。