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