Boa noite galera, estou desenvolvendo um projeto com as tecnologias JSF 2, JPA, CDI, e segui um tutorial onde criei a parte de login com SpringSecurity, a parte de login deu certo e estou logando normalmente na aplicação, mas o problema é que não consigo pegar o usuário logado na sessão para exibir na minha página de boas vindas.
Classe responsável pela autenticação:
@Named
@SessionScoped
public class CustomAuthenticationProvider implements AuthenticationProvider {
private UsuarioService usuarioService = new UsuarioService();
private Usuario user;
public CustomAuthenticationProvider() {
super();
}
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String userName = authentication.getPrincipal().toString();
String password = authentication.getCredentials().toString();
this.user = usuarioService.procuraPorUsuarioESenha(userName, password);
if (user != null) {
List<GrantedAuthority> autorizacoes = new ArrayList<>();
autorizacoes.add(new SimpleGrantedAuthority(user.getRole()));
UserDetails userDetails = new User(userName, password, autorizacoes);
return new UsernamePasswordAuthenticationToken(userDetails, password, autorizacoes);
} else {
return null;
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
Ao exibir a mensage no topo: Seja bem vindo,#{customAuthenticationProvider.user.nome}, o nome do usuário não é exibido, o que poderia ser?