Autentificación Web usando Interceptor de Struts 2
Una de las características comunes de las aplicaciones Web suele ser la autentificación de usuarios para acceder a una zona más personalizada.
Gracias al Framework Struts 2 podemos usar los Interceptor para realizar esta acción.
1. ¿Qué son los Interceptor?
Un Interceptor en Struts es un método que se ejecuta antes y después de la acción que se esta ejecutando. Este puede modificar el flujo de la acción.
2. ¿Cómo nos pueden ayudar en la autentificación de un usuario?
Como se ejecutan antes de la acción en curso, podemos configurar que el interceptor compruebe si el usuario esta autentificado y si no lo esta, redireccionar a la página de Login.
3. Crear el Interceptor
El Interceptor debe implementar la interface Interceptor, la cual tiene 3 métodos
public void init(): Se ejecuta justo después de crear el Interceptor. public void destroy(), Se ejecuta antes de destruir el Interceptor. public String intercept(ActionInvocation actionInvocation) throws Exception, Es el método que llama Struts
Para autentificar deberemos mirar si el usuario esta ya autentificado, y sino redireccionar al Login:
public class AuthenticationInterceptor implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation actionInvocation) throws Exception { Map session = actionInvocation.getInvocationContext().getSession(); if (session.get("usuario") == null) { return Action.LOGIN; } else { return actionInvocation.invoke(); } } }
Si el usuario no se encuentra autentificado, devolvemos Action.LOGIN, esto impide que se ejecute la acción, dándola como resultado LOGIN.
Si el usuario si se encuentra autentificado, continuamos con el flujo normal de Struts, mediante la llamada a ActionInvocation.invoke().
4. Configurar Struts
Como en muchas aplicaciones web tenemos una parte pública y una con autentificación, este interceptor solo debería afectar a parte de las acciones. Para diferenciar una parte de otra en Struts podemos usar los paquetes:
Dentro de este paquete, declaramos el interceptor que hemos creado:
Lo declaramos como el interceptor por defecto:
Declaramos el resultado de login para todas las acciones:
/jsp/administracion/login.jsp
Ahora cualquier acción que añadamos dentro del paquete necesitara tener el usuario autentificado, sino, nos reenviara a la página de Login.
May 21st, 2009 at 6:54 pm
[...] Autentificación Web usando Interceptor de Struts 2www.masterdlabs.es/2009/autentificacion-web-usando-intercept… por javierferraz hace pocos segundos [...]
May 21st, 2009 at 7:44 pm
[...] masterdlabs.es « Un ejemplo de vida y [...]