Logout não executa

1 resposta
Marcio_Nogueira
Estou tendo o seginte problema com uma aplicação aqui no trampo: o usuário efetua o login normalmente, porém ao efetuar o logout, a página inicial (autenticação) não é carregada. Segue abaixo o código de meu faces-config:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
	<!-- LOGIN / LOGOUT -->
	<managed-bean>
		<managed-bean-name>loginBean</managed-bean-name>
		<managed-bean-class>controle.LoginBean</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	
	<navigation-rule>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
    		<from-action>#{loginBean.doLogin}</from-action>
    		<from-outcome>true</from-outcome>
			<to-view-id>/jsp/login/index_mod.jsp</to-view-id>	
    	</navigation-case>
    	<navigation-case>
			<from-action>#{loginBean.doLogin}</from-action>
			<from-outcome>false</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
    		<from-outcome>logout</from-outcome>
			<to-view-id>/index.jsp</to-view-id>	
    	</navigation-case>
	</navigation-rule>
	
	<!-- CADASTRO DO CENSITARIO -->
	<managed-bean>
		<managed-bean-name>cadastroCensitarioBean</managed-bean-name>
		<managed-bean-class>censitario.CadastroCensitarioBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<!-- CONTRATACAO -->
	<managed-bean>
		<managed-bean-name>contratacaoBean</managed-bean-name>
		<managed-bean-class>censitario.ContratacaoBean</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	
	<!-- DESLIGAMENTO -->
	<managed-bean>
		<managed-bean-name>desligamentoBean</managed-bean-name>
		<managed-bean-class>lancamentos.DesligamentoBean</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	
	<navigation-rule>
	<from-view-id>/desligamento.jsp</from-view-id>
	<navigation-case>
	<from-outcome>sucesso</from-outcome>
	<to-view-id>/desligamento.jsp</to-view-id>
	</navigation-case>
	<navigation-case>
	<from-outcome>iniciar</from-outcome>
	<to-view-id>/index_mod.jsp</to-view-id>
	</navigation-case>
	
	</navigation-rule>
	
	<navigation-rule>
		<from-view-id>/censitario.jsp</from-view-id>
		<navigation-case>
      		<from-outcome>entrada</from-outcome>
			<to-view-id>/censitario.jsp</to-view-id>	
    	</navigation-case>
    	<navigation-case>
			<from-outcome>inicio</from-outcome>
			<to-view-id>/index.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>entrada2</from-outcome>
			<to-view-id>/cadastro.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>contratacao</from-outcome>
			<to-view-id>/contratacao.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>entrada3</from-outcome>
			<to-view-id>/cadastro.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	
	<!-- CALCULO FP -->
	<managed-bean>
		<managed-bean-name>calculoFPBean</managed-bean-name>
		<managed-bean-class>calculoFP.CalculoFPBean</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>
	
	<navigation-rule>
		<navigation-case>
			<from-outcome>calcularFP</from-outcome>
			<to-view-id>/jsp/services/calculoFP.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>fecharFP</from-outcome>
			<to-view-id>/jsp/services/fechaFP.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
		<from-outcome>execFPCancel</from-outcome>
			<to-view-id>/jsp/calculoFP/execCalc.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>execFPRetornar</from-outcome>
			<to-view-id>/jsp/calculoFP/execCalc.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	<!--
	<managed-bean>
		<managed-bean-name>CensitarioBean</managed-bean-name>
		<managed-bean-class>censitario.CensitarioBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>cadastroBean</managed-bean-name>
		<managed-bean-class>censitario.CadastroUsuarioBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		 <managed-bean-name>LotacaoBean</managed-bean-name>
		 <managed-bean-class>censi.LotacaoBean</managed-bean-class>
		 <managed-bean-scope>request</managed-bean-scope>
	 </managed-bean>
	-->
	
		
</faces-config>
meu managed bean:
package controle;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import util.Util;
import dao.CtlreffpDAO;
import dao.GenericDAOJPA;
import dao.RelacPerfilrecursoDAO;
import dao.UfDAO;
import dao.UsuarioDAO;
import entities.Ctlreffp;
import entities.Uf;
import entities.Usuario;

public class LoginBean {

	private String login;
	private String senha;
	private String novaSenha;
	private String confirmarSenha;
	private static int anoMesRef = 0;
	
	public LoginBean (){
	//	System.out.println("LoginBean....: ");
	}
	
		
	public boolean doLogin() {
	
		System.out.println("Login " + login);
		System.out.println("Senha " + senha);
		System.out.println("Crypt " + Util.criptografar(senha.toLowerCase()));
		
		Usuario user = UsuarioDAO.getInstance().Login(login, Util.criptografar(senha.toLowerCase()));

		if(user != null) {
			System.out.println("Usuario logado com sucesso !!!");
			SapcSessao sapcSessao = new SapcSessao();
				
			Ctlreffp ctlref = CtlreffpDAO.getInstance().getCtlreffp();
	
			String strReffp="???";
            int anoRef=0;
            int mesRef=0;
            if (ctlref!=null){
                strReffp=ctlref.getStrMesAno();
                anoRef=ctlref.getAno();
                mesRef=ctlref.getMes();
                this.anoMesRef=anoRef*100+mesRef;
            }
		
            sapcSessao.setUsuario(user);
            sapcSessao.idPerfil = (user.getPerfil().getSituacao().equals("1"))?user.getPerfil().getId():0L;
            sapcSessao.setLoginUsuario(user.getLogin());
            sapcSessao.setNomeUsuario(user.getNome());
            sapcSessao.setCpfUsuario(user.getCpf());
            sapcSessao.setUfTrabalho(user.getCodigoUf());
            sapcSessao.setStrReffp(strReffp);
            sapcSessao.setAnoRef(anoRef);
            sapcSessao.setMesRef(mesRef);
            sapcSessao.setAnomesRef(this.anoMesRef);
            sapcSessao.recursoSis = RelacPerfilrecursoDAO.getInstance().recurso(user.getPerfil().getId());
            
            UsuariosLogados.getInstance().addUsuario(user);
            Uf uf = (Uf)UfDAO.getInstance().getUf(sapcSessao.getUfTrabalho());
			
            FacesContext context = FacesContext.getCurrentInstance();
            HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
            session.setAttribute(SapcSessao.ID, sapcSessao);
            session.setAttribute("USUARIO", user.getId());
            session.setAttribute("local", uf.getNome());
            session.setAttribute("nome", sapcSessao.getLoginUsuario());
            session.setAttribute("uf", sapcSessao.getUfTrabalho());
            session.setAttribute("mesRef", sapcSessao.getMesRef());
            session.setAttribute("anoref", sapcSessao.getAnoRef());
            session.setAttribute("URL","/sapc-www/index_mod.jsp");
			 
		} else {
			System.out.println("Acesso negado !!!");
			return false;
        }
		return true;
	}
	
	public static SapcSessao getSession() {
		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		return (SapcSessao)session.getAttribute(SapcSessao.ID);
	}
	
	
	public String logout() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
		session.invalidate(); 
		return "logout";
	} 
	
	public void alterarSenha() { 
		System.out.println("alteração de senha idUsuarioSel :: " + Util.criptografar(novaSenha));        
        try{
            Usuario usuario = null;
            
            SapcSessao sapcSessao = LoginBean.getSession();
                       
            String idUsuarioSel = sapcSessao.getIdUsuario().toString();
            usuario = UsuarioDAO.getInstance().get(new Long(idUsuarioSel));
            usuario.setSenha(Util.criptografar(novaSenha));
            
            UsuarioDAO.getInstance().update(usuario);         

        } catch (Exception e){            
        	e.printStackTrace();
        }
    }

	public String getLogin(){
		System.out.println("get " + login);
		return login;
	}

	public void setLogin(String login){
		System.out.println(login);
		this.login = login;
	}

	public String getSenha(){
		return senha;
	}

	public void setSenha(String senha){
		System.out.println(senha);
		this.senha = senha;
	}
	
	public String getNovaSenha() {
		return novaSenha;
	}

	public void setNovaSenha(String novaSenha) {
		System.out.println(novaSenha);
		this.novaSenha = novaSenha;
	}

	public String getConfirmarSenha() {
		return confirmarSenha;
	}

	public void setConfirmarSenha(String confirmarSenha) {
		System.out.println(confirmarSenha);
		this.confirmarSenha = confirmarSenha;
	}
	
	public static int getAnoMesRef() {
		return anoMesRef;
	}
}
menuprincipal.jsp:
<div id="sair">
		<h:commandLink id="linkSair" action="#{loginBean.logout}" styleClass="linkSair">Sair</h:commandLink>
	</div>

Quem puder ajudar agradeço.

1 Resposta

Marcio_Nogueira

Quando clico no lik sair, a aplicação morre, nada é executado.
Alguém poderia dar uma ajuda?

Criado 22 de março de 2011
Ultima resposta 22 de mar. de 2011
Respostas 1
Participantes 1