Estou na aula 12 do cursso 'Java e JSF I: Sua aplicação web com JSF2', criei a classe Autorizador mas continuo acessando as paginas livro.xhtml e autor.xhtml mesmo sem fazer login. A classe LogPhaseListener também não está imprimindo no console as fases executadas. No console não aparece nenhuma mensagem de erro.
Autorizador
package br.com.alura.livraria.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.alura.livraria.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;
}
}
LogPhaseListener
package br.com.alura.livraria.util;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
public class LogPhaseListener implements PhaseListener {
private static final long serialVersionUID = 1L;
@Override
public void afterPhase(PhaseEvent arg0) {
}
@Override
public void beforePhase(PhaseEvent event) {
System.out.println("FASE: " + event.getPhaseId());
}
@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}