Session jsf

11 respostas
I

Olá galera gostaria de saber se alguem sabe como criar uma sessão de um usuário na Bean.

11 Respostas

thiagocg

Faz assim:

FacesContext.getCurrentInstance().getExternalContext().getSession(true);

O boolean ai no final define se ele cria ou não a sessao caso ela não exista!

I

como associo o usuárioa session???
Estou validando o meu usuario dessa forma:

public String checkLogin() throws NoSuchAlgorithmException{

Session session = HibernateUtil.getSession();

Query q = session.createQuery(“from Usuario where login=:nome”);

q.setParameter(“nome”, usuario.getLogin());

Usuario usuario4 = (Usuario) q.uniqueResult();
MessageDigest md = MessageDigest.getInstance("SHA-1");
	byte[ ] hash = md.digest(usuario.getSenha().getBytes( ));				
	String senha2 = CriptoUtil.byteArrayToHexString(hash);
	
	if (usuario4.getSenha().equals(senha2)){
		return "index";
		
	}			
	
	return "login"

}

thiagocg

após validar o usuario vc coloca ele como um atributo de sessão.

ex:

session.setAttribute("chave", usuario);

onde a chave é a String pela qual vc irá recuperar o usuario quando for necessário!

I

Valeu amigo entendi, mas colokei e ele pede para dar um cast em session e mesmo assim nao sai o erro!!!

if (usuario4.getSenha().equals(senha2)){

session.setAttribute(chave”,usuario4);

return index”

}
RaulCarlin

Eu utilizo PhaseListener pra isso, tenho um MBean de escopo Session que tem um usuário, assim, quando a sessão expirta, esse usuário se torna null e eu permito que outro Login seja feito…

Dá uma olhada nesse BLOG, foi daí que tirei a idéia pra montar meu controle: http://ciromacedo.blogspot.com/2008/06/controle-de-acesso-no-jsf.html

Espero que ajude…

I

todos os meus Bean estão no escopo da session, posso usar o PhaseListener na minha aplicação?
Grato amigo!!!

I

Resolvido com a dica de thiago

thiagocg

blz!!! :thumbup:

I

Thiago, vc sabe como fecho a sessão,
Ex: um link para sair, onde fecharar a sessão.
Obg!!!

thiagocg

Cara, deve ter um jeito mais simples, mas eu to fazendo assim:

//pego a minha sessão atual
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);

//pego o objeto de sessão para depois torná-lo nulo
ObjetoSessao os = (ObjetoSessao) session.getAttribute(ObjetoSessao.USUARIO_SESSAO_KEY);		
os = null;

//pego uma instancia do FacesContext para buscar nela o meu ManagedBean de usuário para setar meu objeto global
FacesContext facesContext = FacesContext.getCurrentInstance();
UsuarioMB usuarioMB = (UsuarioMB) facesContext.getApplication().getVariableResolver().resolveVariable(facesContext, "usuarioMB");
usuarioMB.setUsuario(new Usuario());

//seto o meu objeto de sessão nulo na sessão
session.setAttribute(ObjetoSessao.USUARIO_SESSAO_KEY,os);

//invalido a minha session
session.invalidate();

//pego a instancia do navigationHandler para chamar manualmente a navegação para o login do sistema
NavigationHandler navigationHandler = facesContext.getApplication().getNavigationHandler();
navigationHandler.handleNavigation(facesContext, null,"sairSistema");

Deve ter uma maneira mais simples, mas ta funcionando assim tb!

Espero q te ajude!
Abraço!

I

Blz vou tentar desse jeito.

Valeu!!!

Criado 30 de setembro de 2008
Ultima resposta 17 de nov. de 2008
Respostas 11
Participantes 3