Pregunta

Estoy trabajando en un complemento para ICN y he logrado hacerlo iniciar sesión automáticamente recuperando el nombre de usuario / contraseña de un archivo por un ID que se pasa como un parámetro en la URL.Una vez que un usuario ha iniciado sesión, no será necesario volver a registrar, sin embargo, después de un tiempo, la "caducidad de la sesión" se activará e incluso después de recargar, no puedo ingresar nuevamente.Esto podría deberse al hecho de que estoy basando mi decisión en un solo objeto JavaScript: ecm.model.desktop.connected .

En este momento, si ecm.model.desktop.connected es falso , intentará iniciar sesión, esto funciona bien hasta la caducidad de la sesión, que aparentemente no establece el ecm.model.desktop.Connected a falso, todavía está establecido en verdadero.Así que espero aprender una manera de saber si la sesión ha caducado.

Este aquí es mi código de inicio de sesión:

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();
}

¿Fue útil?

Solución

He gestionado una solución para evitar la expiración de la sesión completamente usando un conjunto de cookies para expirar en 'X' minutos haciendo una especie de sesión propia. Primero, compruebe si se crea la cookie, si no es lo que significa que haya caducado o nunca se creó en primer lugar, por lo que lo creo y hago una llamada de publicación sincrónica a logoff.do y recargar () el sitio.

Una vez creado y después de la recarga, verifico si la cookie existe una vez más, ya que sí, verifico si ECM.Model.Desktop.Connected es falso o el usuario está tratando de iniciar sesión con una ID diferente.Si eso ocurre, lo tendré en iniciar sesión en hacer una llamada de publicación sincrónica a Logon.Do con el nombre de usuario / contraseña adecuado y luego volver a cargar ().

Todo hecho El usuario ahora tiene acceso a las funciones que ofrece mi complemento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top