¿Cómo redireccionar a la página de inicio de sesión cuando la sesión expira?
Tengo tres módulos web JSF 2.0 y debo redirigir a la página de inicio de sesión cuando caduque la sesión.
Lo he intentado usando unHttpSessionListener
, esta llamando a lasessionDestroyed()
método de evento, pero no puedo reenviar / redirigir la solicitud allí. Creo que es porque no hayHttpServletRequest
yHttpServletResponse
objetos.
También lo probé usando unPhaseListener
, pero da como resultado un error de "demasiados redireccionamientos" en el navegador web.
public class SessionListener implements PhaseListener {
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
public void beforePhase(PhaseEvent event) {
if (!FacesContext.getCurrentInstance().isPostback()) {
try {
System.out.println("Session Destroyed");
FacesContext.getCurrentInstance().getExternalContext().redirect("login.jsf");
}
catch (Exception e) {
System.out.println("error" + e);
}
}
}
public void afterPhase(PhaseEvent event) {
try {
System.out.println("Session Created");
}
catch (Exception e) {
System.out.println("error" + e);
}
}
}
¿Por qué esos intentos no funcionan y cómo puedo resolverlo mejor?