Olá pessoal, estou tendo dificuldades na implementação do PhaseListener para a validação do usuario na sessão. O problema é o seguinte: No meu sistema de login, o usuario acessa o sistema, no qual tem abas chamando outras paginas jsp que acessam informações em um banco de dados. O problema, é que, com a implementação do PhaseListener, o usuario loga direitinho, mas só tem acesso a pagina principal. Quando ele tenta acessar ou gravar alguma informação no banco, ou tenta abrir uma outra jsp a partir dessa principal, ele dá um reload no filtro (PhaseListener) e volta a tela de login.
Alguem pode me ajudar?? A dias eu estudo sobre isso e ainda não achei uma solução. Agradeço a ajuda. Segue meu PhaseListener:package br.com.caelum.fj26.util;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;
import br.com.caelum.fj26.modelo.Usuario;
public class AuthorizationListener implements PhaseListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public void beforePhase(PhaseEvent event) {
}
public void afterPhase(PhaseEvent event) {
System.out.println("<-----------VALIDANDO REQUISIÇÃO------------>");
FacesContext facesContext = event.getFacesContext();
String currentPage = facesContext.getViewRoot().getViewId();
boolean isLoginPage = (currentPage.lastIndexOf("login.jsp") > -1);
HttpSession session = (HttpSession) facesContext.getExternalContext()
.getSession(true);
System.out.println("=======validado a página=======");
Usuario currentUser = (Usuario) session.getAttribute("currentUser");
if (!isLoginPage && currentUser == null) {
NavigationHandler nh = facesContext.getApplication()
.getNavigationHandler();
System.out.println("<-------condicao lançada-------->");
nh.handleNavigation(facesContext, null, "loginPage");
System.out.println("<-------usuario nao logado-------->");
}
}
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}