在浏览器中关闭选项卡时,身份验证清除

时间:2014-03-25 06:08:49

标签: c# asp.net authentication cookies formsauthentication

我希望在任何浏览器中关闭我的网页的标签时删除用户身份验证。当用户在新标签页中加载我的网页时,他不应该在登录之前看到他的任何细节。

我用过

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

但仅在完成浏览器关闭时才会清除。我希望在标签关闭时清除。

我可以在asp.net中使用什么,C#

1 个答案:

答案 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会帮助你。或者尝试谷歌搜索。