JSF - Atualizar atributos de objeto na Session [ RESOLVIDO ]

Implementei um novo módulo no sistema que estou desenvolvendo, onde o usuário
pode alterar sua senha, até ai tudo bem, funcionou tranquilo.

O problema é o seguinte, tenho um objeto usuario na session onde armazeno as informações
do usuário, tais como usuário e senha em md5.

Dentro do sistema, faço inúmeras validações atráves desse usuario, como por exemplo as opções
do menu que o usuário tem acesso, e restrições as demais páginas.

Porém, eis o meu problema.
A partir do momento que eu altero a senha do usuário, a senha da sessão já não é a mesma do banco
e consequentemente perco o acesso.

Gostaria de saber, como atualizar os atributos de um objeto na session atrás do Backbean.
Por exemplo redefinir o #{usuario.senha} e também como colocar de novo o #{usuario} na sessao pelo backbean.

Ola Gbzao,

nunca testei utilizando jsf, mas no jsp para obter a sessão em uma classe
que não implementa HttpServlet eu utilizo este código…

[code]import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContextFactory;

HttpSession session = WebContextFactory.get().getSession();
//então vc pode fazer
session.removeAttribute(“usuario”);
session.setAttribute(“usuario” , usuarioAtualizado);
[/code]

espero que possa te ajudar…

Uma opção é, logo após você atualizar o usuário, recarregar a sessão. De um MBean é possível acessar outro Mbean, por exemplo:


agoraAtualizaEsteCara(usuario); 
FacesContext fc = FacesContext.getCurrentInstance(); 
NomeDoBeanDeSessao bean = (NomeDoBeanDeSessao)  fc.getApplication().getELResolver().getValue(
				fc.getELContext(), null, "nomeDoBeanDeSessao");

bean.setUsuarioLogado(usuario); 

“nomeDoBeanDeSessao” é o nome que vc chama este bean sei lá, no seu jsp.

Resolvido.

Para recuperar eu estava usando

		FacesContext context = FacesContext.getCurrentInstance();
		Application app = context.getApplication();
		ValueBinding binding = app.createValueBinding("#{usuario}");

Para atualizar foi só fazer:

binding.setValue(context, usuarioAtualizado);