Session jsf

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

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!

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"

}

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!

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”
}

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…

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

Resolvido com a dica de thiago

blz!!! :thumbup:

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

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!

Blz vou tentar desse jeito.

Valeu!!!