Vou compartilhar o código funcionando antes de fechar o tópico
Classequecontrolaasessãopackagebr.com.ufpr.es.util;importjavax.faces.context.ExternalContext;importjavax.faces.context.FacesContext;importbr.com.ufpr.es.modelo.Pessoa;publicclassSessionContext{privatestaticSessionContextinstance;publicstaticSessionContextgetInstance(){if(instance==null){instance=newSessionContext();}returninstance;}privateSessionContext(){}privateExternalContextcurrentExternalContext(){if(FacesContext.getCurrentInstance()==null){thrownewRuntimeException("O FacesContext não pode ser chamado fora de uma requisição HTTP");}else{returnFacesContext.getCurrentInstance().getExternalContext();}}publicPessoagetUsuarioLogado(){return(Pessoa)getAttribute("usuarioLogado");}publicvoidsetUsuarioLogado(Pessoausuario){setAttribute("usuarioLogado",usuario);}publicvoidencerrarSessao(){currentExternalContext().invalidateSession();}publicObjectgetAttribute(Stringnome){returncurrentExternalContext().getSessionMap().get(nome);}publicvoidsetAttribute(Stringnome,Objectvalor){currentExternalContext().getSessionMap().put(nome,valor);}}Filtroutilizadoparaevitaracessoapáginasemtersessãoativapackagebr.com.ufpr.es.util;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importbr.com.ufpr.es.modelo.Pessoa;publicclassFiltroLoginimplementsFilter{/** * Default constructor. */publicFiltroLogin(){// TODO Auto-generated constructor stub}/** * @see Filter#destroy() */publicvoiddestroy(){// TODO Auto-generated method stub}/** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{Pessoapessoa=null;HttpSessionsess=((HttpServletRequest)request).getSession(false);if(sess!=null){pessoa=(Pessoa)sess.getAttribute("usuarioLogado");}if(pessoa==null){StringcontextPath=((HttpServletRequest)request).getContextPath();((HttpServletResponse)response).sendRedirect(contextPath+"/index.xhtml");}else{chain.doFilter(request,response);}}/** * @see Filter#init(FilterConfig) */publicvoidinit(FilterConfigfConfig)throwsServletException{// TODO Auto-generated method stub}}MétodologarnomeubeanpublicStringdoLogin(){SimpleHashhash=newSimpleHash("md5",pessoa.getSenha());pnova=pDAO.BuscarLogin(pessoa.getCpf(),hash.toHex());if(pnova.getId()>0&&pnova.getSituacao().equalsIgnoreCase("ativo")){// redireciona conforme o nívelSessionContext.getInstance().setAttribute("usuarioLogado",pnova);if(pnova.getNivel()==1){return"/pages/professor/principalProfessor.xhtml?faces-redirect=true";}if(pnova.getNivel()==2){return"/pages/aluno/principalAluno.xhtml?faces-redirect=true";}if(pnova.getNivel()==3){return"/pages/supervisor/principalSupervisor.xhtml?faces-redirect=true";}if(pnova.getNivel()==4){return"/pages/principais/principalEmpresa.xhtml?faces-redirect=true";}if(pnova.getNivel()==5){return"/pages/funcionario/principalFuncionario.xhtml?faces-redirect=true";}else{return"/index.xhtml?faces-redirect=true";}}else{FacesMessagefm=newFacesMessage("Dados incorretos","ERRO MSG");fm.setSeverity(FacesMessage.SEVERITY_ERROR);FacesContext.getCurrentInstance().addMessage(null,fm);return"";}}