Recuperar Bean de Spring Security

Estou fazendo uma aplicação com jsf2.1 e spring security 3.1
O login esta funcionando perfeitamente.
Agora o spring security fica responsável pelo login do sistema, mas gostaria de saber como faço para recuperar as informações do usuário após ele ser autenticado pelo spring, por exemplo,
o usuário se logou no sistema e gostaria de ter algum dado da base, mas para isso eu teria que fazer uma consulta no banco de dados, todavia o spring que ficou com o email, senha e autoridade dele.
Ou seja, como fazer o login com o spring security e setar mo meu SessionBean as variáveis necessárias para fazer a minha lógica ??

[]s

Bom Dia !

Nos temos um sistema antigo em VRaptor usado spring security, deve ter trocentos post meu sobre o assunto, nosso sistema loga, carrega na sessão o usuário logado com suas permições, ADM;USU;PUTA;VIADO; etc…

Essas permissões que vai definir as informações do usuário. e o que ele pode fazer no sistema !

Tudo via Bean !

Eu consegui recuperar o login do usuário atraves do codigo abaixo

Via Spring

UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

Via jsf

ExternalContext fc = FacesContext.getCurrentInstance().getExternalContext();
string login = fc.getRemoteUser()

No meu sistema o usuário faz o login por email e senha, logo o spring so me devolve o email do usuario a senha nem pensar.
Como o email pode ser tratado como um naturalID, posso buscar os dados restantes dos dados do usuario no banco de dados.

Caso alguem saiba como recuperar o bean da sessão de uma forma melhor posta ai. Eu gostaria muito de saber algum método melhor.

[]s

cara, não sei se isso é certo, mas além do spring security, eu guardo os dados do usuário num bean de sessão separado, dai quando eu quero pegar os dados, eu injeto na classe que eu quero e pronto.

exemplo:

@Component
@Scope("session")
public class UserSession{
    private User user;

    //getter e setter
}

dai quando eu quero usar

@Autowired
private UserSession session;

fica mais simples p/ manipular meu usuário que está logado.

espero ter ajudado.

[]'s

Boa tarde kcobainnn, usei o codigo que vc colocou mas qunado tento usar o usuario ele está nulo.

eu quero na verdade pegar o usuario da sessao e mudar a role dele.

Você precisa setar o usuário no UserSession, uma vez que você logou. Você está fazendo isso? Poste o código para eu dar uma olhada.

olá bom dia, não estou setando;
só declarei.

no meu bean

@Autowired
private UserSession userSession;

Você precisa setar o usuário logado no UserSession, senão ele vai estar nulo mesmo, já que ninguém setou nada nele.

como eu seto ele?

pegando pelo FacesContext

UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();