【问题标题】:Authentication clear when tab closed in a browser在浏览器中关闭选项卡时清除身份验证
【发布时间】:2014-03-26 12:08:27
【问题描述】:

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

我用过

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

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

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

【问题讨论】:

    标签: c# asp.net authentication cookies formsauthentication


    【解决方案1】:

    您可以尝试使用 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 能帮到你。或者尝试谷歌搜索。

    【讨论】:

    • 如果我的网站有两个不同阶段的选项卡,当关闭一个选项卡时,其他选项卡也会丢失身份验证。
    猜你喜欢
    • 2018-07-18
    • 2013-09-23
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多