我正在为ICN制作一个插件,并且我设法让它自动从一个文件中检索用户名/密码,这个id作为url中的参数传递。一旦用户登录,就不需要重新登录,但是在一段时间之后会话到期'将会开始,甚至在重新加载后我无法再次登录。这可能是因为我根据单个javascript对象做出了决定: ecm.model.desktop.connected 。
现在,如果 ecm.model.desktop.connected false ,它会尝试登录,这会很有效,直到会话到期,这显然不会设置 ecm.model.desktop.connected 为false,它仍然设置为true。因此,我希望学会一种方法来判断会话是否已经过期。
这是我的登录代码:
if (ecm.model.desktop.connected == false || ecm.model.desktop.userId != loginConfig[loginID].username) {
var http2 = new XMLHttpRequest();
var url2 = "/navigator/logon.do";
var params2 = "userid=" + loginConfig[loginID].username + "&password=" + loginConfig[loginID].password;
http2.open("POST", url2, false);
http2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http2.onreadystatechange = function() {//Call a function when the state changes.
if (http2.readyState == 4 && http2.status == 200) {
}
};
http2.send(params2);
window.location.reload();
}
答案 0 :(得分:0)
我管理了一个避免会话过期的解决方法,完全使用cookie设置为在'x'分钟到期,使我自己进行某种会话。 首先,我检查cookie是否已创建,如果不是它意味着它已过期或从未创建过,所以我创建它并对logoff.do进行同步POST调用并重新加载()该站点。
一旦创建并在重新加载后,我会再次检查cookie是否存在,因为它检查ecm.model.desktop.connected是否为false或用户是否尝试使用其他ID登录。如果发生这种情况,我会让它登录,使用正确的用户名/密码对logon.do进行同步POST调用,然后重新加载()。
所有用户现在都可以访问我的插件提供的功能。