Actualmente estoy en el proceso de aprendizaje Struts 2 y actualmente estoy construyendo una sencilla aplicación donde los usuarios no verificados son redirigidos a un formulario de acceso.redirigir a otra acción en un interceptor de puntales 2
Tengo un formulario de inicio de sesión y una acción funcional que toma las credenciales de los usuarios, las verifica y almacena un objeto de usuario en la sesión, pero ahora intento evitar el acceso a las páginas antes de iniciar sesión y estoy intentando hacer esto con un interceptor.
Mi problema es que he escrito un interceptor que comprueba si el objeto Usuario ha sido guardado en la sesión pero si no lo ha hecho, quiero redireccionar a la página de inicio de sesión y no puedo encontrar ninguna forma de hacerlo sin omitir puntales y utilizando el método HttpServletResponse.sendRedirect
Configuración:
<package name="mypackage" extends="struts-default" namespace="/admin">
<interceptors>
<interceptor name="login" class="my.LoginInterceptor" />
</interceptors>
<default-interceptor-ref name="login"/>
<action name="login" class="my.LoginAction">
<result name="input">/admin/login.jsp</result>
<result name="success" type="redirect">/admin</result>
</action>
<action name="private" class="my.PrivateAction">
<result>/admin/private.jsp</result>
</action>
</package>
el código interceptor:
@Override
public String intercept(ActionInvocation inv) throws Exception {
Map<String, Object> session = inv.getInvocationContext().getSession();
Object user = session.get("user");
if(user == null) {
// redirect to the 'login' action here
}
else {
return inv.invoke();
}
}
Gracias, y gracias extra para la orientación de bonificación. ¿Cómo podría evitar que el interceptor capte la acción de inicio de sesión? – 3urdoch
En realidad, trabajé eso por mi mismo, acabo de poner en la acción de inicio de sesión. –
3urdoch
Sí, esa es una forma. – leonbloy