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!!!