2010-06-15 34 views
6

en mi aplicación Grails Tengo un par de filtros de seguridad simples (tenga en cuenta que es sólo un prototipo, no una aplicación comercial:¿Redirigir después del inicio de sesión?

securityCheckFilter(controller:'overview', invert:true) { 
      before = { 
       if(!session?.gaSession?.gaUser) { 
        flash.message = "You are not authorised to see this page. Please login." 
        redirect(controller:'overview',action:'login') 
        return false 
       } 
       return true 
      } 
     } 

Lo que significa que, además de la controladora 'visión general' que se encarga de la entrada/registro, todos los otros controladores requieren autenticación El problema es que me gustaría poner en práctica este flujo típico:.

(1) intentos de usuario protegidos url (2) cambio de dirección para iniciar sesión (3) inicio de sesión correcto (4) redirección a url

En mi código que funciona hasta el punto 3, pero me falta 4.

¿Alguna pista?

Respuesta

6

En realidad es bastante fácil. Sólo

  • envíe el URI de destino (del punto 1 en su pregunta) como un parámetro a la acción de acceso/vista
  • asegúrese de que su nombre de usuario de forma reenvía este parámetro para la acción de autenticación (por ejemplo. A través de un campo oculto)
  • en la acción de autenticación, si el inicio de sesión se ha realizado correctamente, simplemente redirigir a este URI

para obtener el URI de destino (en el filtro), basta con retirar la ruta de contexto del avance URI:

def targetURI = request.forwardURI - request.contextPath 
+1

¡gracias a un millón! – Mulone

Cuestiones relacionadas