我的应用程序中存在一种情况,即不允许用户在浏览器中打开应用程序的多个实例。所以我们正在读取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");
};
}
};
请您建议我做的任何更改,以限制用户只打开应用程序的单个实例。
答案 0 :(得分:0)
我通常会在登录页面上通过创建新会话来处理此问题,并在用户使用正确的凭据再次登录时使旧会话无效。