Logout em JSF! URGENTE!

3 respostas
RenZasso

Bom dia caros amigos do GUJ!

Estou encarando certas dificuldades em realizar um logout com sucesso em JSF! Ao clicar em um botão LOGOUT na minha página, a mesma restorna para a página de LOGIN. Até aí tudo bem. Mas depois, á partir desta página de LOGIN se tento logar novamente, acho que ele abre uma sessão nova para mim porém o conteúdo da minha página não aparece corretamente, ou seja, os conteúdos buscados dos BackingBeans! O que está acontecendo com esses meus beans alguem sabe? Estão invalidados ou algo assim? Todos eles estao com o escopo SESSION. Aqui, o codigo que utilizo para realizar o logout:

public String logout(){

setUsuario(new Usuarios());

_autenticado = false;
FacesContext facesContext = FacesContext.getCurrentInstance(); 
	HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); 
	session.invalidate(); 
	
	status = "logout";

	return status;

}

Alguem poderia me ajudar pessoal?

Valeuuuu!

3 Respostas

Carlos_ds_jar

RenZasso:
Bom dia caros amigos do GUJ!

Estou encarando certas dificuldades em realizar um logout com sucesso em JSF! Ao clicar em um botão LOGOUT na minha página, a mesma restorna para a página de LOGIN. Até aí tudo bem. Mas depois, á partir desta página de LOGIN se tento logar novamente, acho que ele abre uma sessão nova para mim porém o conteúdo da minha página não aparece corretamente, ou seja, os conteúdos buscados dos BackingBeans! O que está acontecendo com esses meus beans alguem sabe? Estão invalidados ou algo assim? Todos eles estao com o escopo SESSION. Aqui, o codigo que utilizo para realizar o logout:

public String logout(){

setUsuario(new Usuarios());

_autenticado = false;
FacesContext facesContext = FacesContext.getCurrentInstance(); 
	HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); 
	session.invalidate(); 
	
	status = "logout";

	return status;

}

Alguem poderia me ajudar pessoal?

Valeuuuu!


Bastante trivial, vc está jogando agua no seu fogo!
Se os seus beans que ajudam a formar a pagina estão na seção e esta por sua vez é invalidade a consequencia é a má formação da pagina.
O que deve ser feito é a colocação desses seus beans no escopo de aplicação em vez do de seção :idea:

RenZasso

Fala Carlos_df_jar

Primeiramente, agradeço pela força aí parceiro! Então cara, já obtive uma evolução! Antes quando eu voltava pra página de login e entrava com login e senha novamente, ele nao carregava os beans corretamente. Agora, quando estou dando logout e entrando denovo com o mesmo LOgin e Senha ele volta legalzinho pra página, porém, se entrou com outro login e senha ele entra na página anterior. Hunf estranho viu cara! Não entendo muito sobre os escopos do jsf, se você ou alguém puder dar uma força e agradeço!

Vlwwww!
Abraços!

Carlos_ds_jar
RenZasso:
Fala Carlos_df_jar

Primeiramente, agradeço pela força aí parceiro! Então cara, já obtive uma evolução! Antes quando eu voltava pra página de login e entrava com login e senha novamente, ele nao carregava os beans corretamente. Agora, quando estou dando logout e entrando denovo com o mesmo LOgin e Senha ele volta legalzinho pra página, porém, se entrou com outro login e senha ele entra na página anterior. Hunf estranho viu cara! Não entendo muito sobre os escopos do jsf, se você ou alguém puder dar uma força e agradeço!

Vlwwww! Abraços!
Bom dia, vou tentar ser mais direto na minha explicação, vc deve colocar os seus beans de construção da página no contexto da aplicação, eis uma meneira de se obter o contexto da aplicação:
public class MyContexListener implements ServletContextListener {

         private DatabaseManager manager = null;
 
 	   public void contextInitialized(ServletContextEvent event){
               try{   
                   ServletContext context =  event.getServletContext();
                   String url = context.getInitParameter("databaseUrl");
                   String login = context.getInitParameter("databaseLogin");
                   String password = context.getInitParameter("databasePassword");
                   manager = new DatabaseManager(url, login, password);
                   context.setAttribute("databaseManager", manager);
               }
               catch(Exception e){}
         }
}
Criado 11 de agosto de 2010
Ultima resposta 11 de ago. de 2010
Respostas 3
Participantes 2