0

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

我用了

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

但仅在浏览器完全关闭时才会清除。我想在标签关闭时清除。

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

4

1 回答 1

2

您可以尝试使用 javascriptonunload事件删除 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如问题所示。这就是为什么我建议onunload在我的回答中使用 javascript 事件删除 cookie。因此,当标签在浏览器中关闭时,它将清除身份验证,不会考虑具有网站不同阶段的另一个标签(即回答问题)。

如果您想在站点不同阶段的另一个选项卡上维护身份验证,您必须使用 cookie 在浏览器窗口(以及选项卡)之间进行通信。如果您发现另一个具有相同站点的选项卡,请不要清除 cookie。您可以在 javascript 函数中执行此操作。希望此链接对您有所帮助。或者尝试谷歌搜索。

于 2014-03-25T06:31:42.513 回答