Fiz um projeto análogo ao do curso, como forma de fixar meu aprendizado,.
Neste projeto, a entidade livro foi trocada por veiculo, e Autor por proprietário. No entanto, ao fazer login, o console cospe a saída : chamando Login
FASE: RESTORE_VIEW 1
/veiculo.xhtml
FASE: RESTORE_VIEW 1
/login.xhtml
FASE: RENDER_RESPONSE 6
ele chama a página veiculo, mas depois renderiza para login novamente. Meu método de Login em LoginBean
public String efetuaLogin() {
System.out.println("entreo");
boolean existe = new UsuarioDAO().existe(this.usuario);
System.out.println("chamando Login");
FacesContext context = FacesContext.getCurrentInstance();
if (existe) {
System.out.println(usuario.getEmail() + " " + usuario.getSenha());
context.getExternalContext().getSessionMap().put("usuariologado", this.usuario);
return "veiculo?faces-redirect=true";
}
context.getExternalContext().getFlash().setKeepMessages(true);
context.addMessage(null, new FacesMessage("Usuario não encontrado"));
return "login?faces-redirect";
}
Minha classe Autorizador
package br.com.veiculoimposto.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 br.com.veiculoimposto.modelo.Usuario;
public class Autorizador implements PhaseListener {
private static final long serialVersionUID = 1L;
@Override
public void afterPhase(PhaseEvent evento) {
FacesContext context = evento.getFacesContext();
String nomePagina = context.getViewRoot().getViewId();
System.out.println(nomePagina);
if("/login.xhtml".equals(nomePagina)) {
return;
}
Usuario usuarioLogado = (Usuario) context.getExternalContext().getSessionMap().get("usuarioLogado");
if(usuarioLogado != null) {
return;
}
//redirecionamento para login.xhtml
NavigationHandler handler = context.getApplication().getNavigationHandler();
handler.handleNavigation(context, null, "/login?faces-redirect=true");
context.renderResponse();
}
@Override
public void beforePhase(PhaseEvent event) {
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}
Alguem tem alguma ideia do que pode está acontecendo ?