Как перенаправить на страницу входа после окончания сеанса?
У меня есть три веб-модуля JSF 2.0, и мне нужно перенаправить на страницу входа в систему по окончании сеанса.
Я пробовал это с помощьюHttpSessionListener
зоветsessionDestroyed()
Метод события, но я не могу переслать / перенаправить запрос там. Я думаю, потому что нетHttpServletRequest
а такжеHttpServletResponse
объекты.
Я также попробовал это с помощьюPhaseListener
, но это приводит к «слишком большому количеству перенаправлений» ошибка в веб-браузере.
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);
}
}
}
Почему эти попытки не работают и как я могу решить их лучше?