2012-03-01 21 views
5

Creé un portlet que usa AJAX en cada función. Es decir, el portlet solo se representa una vez y no utilicé processAction o similar.extender la sesión de Liferay al realizar una llamada AJAX

¿Hay alguna manera de extender la sesión del usuario utilizando la función Liferay incorporada mediante javascript?

me trataron

Liferay.Session.extend(); 

pero no parece funcionar ..

También probé una solución en el foro ICEfaces, que es

if (Liferay.Session._stateCheck) { 
      window.clearTimeout(Liferay.Session._stateCheck); 
      Liferay.Session._stateCheck = null; 
     } 
     Liferay.Session.init({ 
      autoExtend: false, 
      timeout: Liferay.Session._timeout, 
      timeoutWarning: Liferay.Session._warning 
      });jQuery.ajax({url: Liferay.Session._sessionUrls.extend}); 

también que no trabaja ..

Pongo esos bloques de código cada vez que el usuario hace clic en un botón

Cualquier sugerencia sería de gran ayuda ..

+1

'Liferay.Session.extend();' es la respuesta, no noté que la sesión se extendió al probar el código – ton

+0

Hola, crea una respuesta y pon tu solución de comentario en ella, y acéptala. De esa forma, la gente sabrá inmediatamente que hay una solución para esta pregunta. –

Respuesta

4

tuve el mismo problema y lo resolvió. La idea principal es reemplazar session.js en ext-plugin, y añadir algún método adicional:

extendExternal: function() { 
    var instance = this; 

    if (instance != undefined) { 
    instance.extend(); 
    } 
} 

También método setCookie debe actualizarse:

setCookie: function(status) { 
    var instance = this; 

    var currentTime = new Date().getTime(); 

    var options = { 
     secure: A.UA.secure, 
     path: "/" 
    }; 

    A.Cookie.set(instance._cookieKey, status || currentTime, options); 
} 

Para utilizar la misma ruta de cookies para cada página.

Y algún acontecimiento mundial ajax se puede utilizar para la llamada 'automático' del método extendExternal:

AUI().use('event', function(A){ 
A.on('io:start', function(transactionid, arguments){ 
    if (Liferay.Session._cookieKey != undefined && Liferay.Session._cookieKey != null) { 
    if (arguments != 'sessionExtend') { 
     Liferay.Session.extendExternal(); 
    } 
    } 
}); 
}); 

en este caso se extienden método tienen que ser actualizados con:

// added in order to differentiate session extend ajax calls and other ajax call, to  avoid infinit loop 
A.io.request(instance._sessionUrls.extend, { 
    arguments: 'sessionExtend' 
}); 

Puede comprobar la solución here.

+0

Considere mejorar esta respuesta para que contenga más que solo un enlace. Ver http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

1

Liferay.Session.extend(); es la respuesta, no noté que la sesión se extiende al probar el código

Cuestiones relacionadas