Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

Cargar página con Ajax cuando la sesión ha finalizado

yagarsi - lunes 19/04/2010

Hola,

Actualmente tengo configurada la aplicación, de tal forma que, cuando la sesión ha finalizado por timeout, y se ejecuta alguna acción, el filtro de seguridad carga la página de login. El problema surge cuando ejecuto un enlace, que actualiza una parte de una página con Ajax y la sesión ha finalizado por timeout, ya que en la porción de la página a actualizar, se muestra la página de login.

¿Cómo puedo hacer para que al ejecutar un enlace Ajax, con la sesión terminada, vaya a la página de login?

Gracias 

Re: Cargar página con Ajax cuando la sesión ha finalizado

Nacho - martes 20/04/2010

Hola,

la idea para resolver tu problema es detectar en el servidor si la petición es Ajax o no. Puedes aprovechar las capacidades dinámicas de Groovy para añadir un método dinámico a la request que te informe del caso leyendo la cabecera x-requested-with. Para hacerlo debes incluir algo así en tu grails-app/conf/BootStrap.groovy:

import javax.servlet.http.HttpServletRequest
class BootStrap {
     def init = { servletContext ->
        HttpServletRequest.metaClass.isAjax = {->
            'XMLHttpRequest' == delegate.getHeader('X-Requested-With')
        }

     }
     def destroy = {
     }
}

De esta manera podrás hacer:

if(request.ajax){
    render "<script type=\"javascript\">window.location.href=${createLink(...)};</script>"
}
else {
    //redirect a la página de login
}

Cuando se reciba una petición Ajax se generará un salto mediante javascript a la página de login, en lugar de mostrarla directamente en el div.

Responder al hilo | Volver al foro "Grails" | Volver a los foros