如果浏览器崩溃,如何删除cookie

时间:2017-11-21 22:02:28

标签: javascript angularjs session cookies

我的应用程序中存在一种情况,即不允许用户在浏览器中打开应用程序的多个实例。所以我们正在读取cookie,如果已经打开了会话,我们会提醒用户他们正在尝试打开多个会话。

有时如果浏览器由于某种原因崩溃,浏览器仍然有旧的cookie,当用户再次尝试打开应用程序时,浏览器不允许用户登录。用户必须从浏览器历史记录中手动删除cookie。该公司并不想要这个过程。

仅供参考我使用angularJS

Found the same question in other post but didn't find an answer I want here

有人可以帮我解决这个问题。提前致谢!

<小时/> 我想出了以下代码。但是当应用程序崩溃时,cookie仍然位于浏览器中,并且根本不允许用户登录。我现在唯一的解决方法是从浏览器手动删除cookie并登录。

var duplicateApp = false;
    function createCookie(name,value,days) {
        var expires = "";
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days*24*60*60*1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }

    function eraseCookie(name) {
        createCookie(name,"",-1);
    }

    window.onload = function(){
        var MyAppCount=readCookie("MyApp");

        if (MyAppCount > 0) {
            duplicateApp = true;
            alert("You are attempting to open multiple application sessions.\n\nPlease close any existing application from the web browser before restarting the application.");
            var win = window.open("about:blank", "_self"); win.close();
        }
        else {
            duplicateApp = false;
            createCookie("MyApp", 1, 1);
            window.onunload = function(){
                if (duplicateApp == false) eraseCookie("MyApp");
            };
        }
    };

请您建议我做的任何更改,以限制用户只打开应用程序的单个实例。

1 个答案:

答案 0 :(得分:0)

我通常会在登录页面上通过创建新会话来处理此问题,并在用户使用正确的凭据再次登录时使旧会话无效。