Problemas ao filtrar requisições

2 respostas
Victor_Almeida

Boa Tarde Galera, tô tendo um pequeno problema e preciso de ajuda.

Criei este PhaseListener para evitar que os usuários entrassem diretamente sem antes validar seu usuário,

package br.com.vteste.listeners;

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;

public class AutorizadorAcesso implements PhaseListener {


	private static final long serialVersionUID = 1L;


	@Override
	public void afterPhase(PhaseEvent event) {
		
		FacesContext facesContext = event.getFacesContext();
		String currentPage = facesContext.getViewRoot().getViewId();
			 
		boolean isLoginPage = (currentPage.lastIndexOf("boasVindas.jsf") > -1);
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
		Object currentUser = session.getAttribute("usuario");
			 
		if (!isLoginPage && currentUser == null) {
			NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
			nh.handleNavigation(facesContext, null, "loginPage");
		}
		
	}
	
	
	public PhaseId getPhaseId() {
		return PhaseId.RESTORE_VIEW;
	}
		

	@Override
	public void beforePhase(PhaseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}

O problema é que o bicho funcionou até demais e não deixa nem validar o usuário mais, todas as vezes que digito e submeto o usuário ele retorno pra página inicial

olha o Managed Bean

package br.com.vteste.validadores;

import java.util.List;
import br.com.vteste.dao.DAOException;
import br.com.vteste.dao.UsuarioDaoLogin;
import br.com.vteste.modelos.Aluno;
import br.com.vteste.modelos.Professor;
import br.com.vteste.modelos.Usuario;


public class ControladorValidaLogin {
	
	private Usuario usuario;
	private UsuarioDaoLogin dao;
	private String paginaInicial = "";
	List<Aluno> listaAlunos;
	List<Professor> listaProfessores;
	private boolean usuarioNaoEncontrado;
	
	
	
	public ControladorValidaLogin(){
		
		usuario = new Usuario();
	}
	
	
	
	public String validarLogin(){

			
			paginaInicial = validarAluno();
			
			System.out.println(paginaInicial);			
			
			return paginaInicial;		
		}
	
	
	private String validarAluno() {
		String pagina = "";
		int i=0;
		//LISTA DE ALUNOS
		try {
			dao = new UsuarioDaoLogin();
			listaAlunos = dao.obterListaAlunos();
		} catch (DAOException e) {
			e.printStackTrace();
		}
		
				
		Aluno aluno = (Aluno) listaAlunos.get(i);
		System.out.println(this.usuario.getNome());
		
		
		if((this.usuario.getUsuario().trim().equalsIgnoreCase(aluno.getUsuario()))&&(this.usuario.getSenha().trim().equalsIgnoreCase(aluno.getSenha()))){
			
			this.usuario = aluno;
			System.out.println("Aluno Validado!!");
			pagina = "/pages/paginasIniciais/paginaInicialAluno.jsf";	
			
		}else{
			for(i = 1; i < listaAlunos.size();i++){
				aluno = (Aluno) listaAlunos.get(i);
				if((this.usuario.getUsuario().trim().equalsIgnoreCase(aluno.getUsuario()))&&(this.usuario.getSenha().trim().equalsIgnoreCase(aluno.getSenha()))){
					
					this.usuario = aluno;
					System.out.println("Aluno Validado!!");
					pagina = "/pages/paginasIniciais/paginaInicialAluno.jsf";
					break;
				}
			}
			
		}
		
		if (pagina.trim().equalsIgnoreCase("")){
			
			pagina = validarProfessor();			
		}		
		
		return pagina;						
	}
	
	
	private String validarProfessor() {
		String pagina = "";
		int i = 0;
		//LISTA DE PROFESSORES
		try {
			dao = new UsuarioDaoLogin();
			listaProfessores = dao.obterListaProfessores();
		} catch (DAOException e) {
			e.printStackTrace();
		}

		
		Professor professor = (Professor) listaProfessores.get(i);
		System.out.println(usuario.getNome());
		
		
		if((this.usuario.getUsuario().trim().equalsIgnoreCase(professor.getUsuario()))&&
		  (this.usuario.getSenha().trim().equalsIgnoreCase(professor.getSenha()))){
			
			this.usuario = professor;
			System.out.println("Professor Validado!!");
			
			pagina = "/pages/paginasIniciais/paginaInicialProfessor.jsf";	
			
		}else{
			for(i = 1; i < listaProfessores.size();i++){
				professor = (Professor) listaProfessores.get(i);
				
				if((this.usuario.getUsuario().trim().equalsIgnoreCase(professor.getUsuario()))&&
				  (this.usuario.getSenha().trim().equalsIgnoreCase(professor.getSenha()))){
					
					this.usuario = professor;
					System.out.println("Professor Validado!!");
					pagina = "/pages/paginasIniciais/paginaInicialProfessor.jsf";
					break;
				}
			}
			
		}
		if (pagina.trim().equalsIgnoreCase("")){
			
			this.usuarioNaoEncontrado = true;
			pagina = "/pages/boasVindas.jsf";			
		}
		return pagina;
	}

o faces config,

<navigation-rule>
  <from-view-id>/*</from-view-id>
  <navigation-case>
   <from-outcome>loginPage</from-outcome>
   <to-view-id>/pages/boasVindas.jsf</to-view-id>
  </navigation-case>
 </navigation-rule>
 <lifecycle>
	<phase-listener>br.com.vteste.listeners.AutorizadorAcesso</phase-listener>
 </lifecycle>
</faces-config>

Alguém poderia me ajudar?

2 Respostas

F

Você já tentou debugar o método afterPhase ?

Victor_Almeida

fre_d:

Você já tentou debugar o método afterPhase ?

O que devo buscar ao debugar?

Criado 4 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 2
Participantes 2