Como saber ter acesso as informações do usuário no Spring Security

5 respostas Resolvido
jsfspring
G

Eu gostaria de saber como eu faço pra ter acesso as informações do usuário que está logado na sessão do spring. Estou utilizando o primefaces e quando eu vou realizar uma ação no bean como usuario.acesso == “Admin” . Ela não realiza a comparação pois a variável está nula. O spring security bloqueia essas informações ? tem alguma maneira certa de pegar elas ?

5 Respostas

A

Tente da seguinte forma:

protected Usuario getUsuario() {
	Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
	return (Usuario) authentication.getDetails();
}
G

Esse metodo me retorna apenas essas informações

org.springframework.security.web.authentication.WebAuthenticationDetails@380f4: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: e54ba025378923214898fb4b41ef

porem queria informações como o nivel de acesso dele como :
ROLE_ADMIN ou ROLE_COMMON entende ?
obs: essas informações estão contidas na coluna acesso do Usuario.

A

Se você configurou o usuário no Spring Security da seguinte forma, deveria funcionar.

UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(usuario.getLogin(), usuario.getSenha(), usuario.getListaPerfil());
	token.setDetails(usuario);
    SecurityContextHolder.createEmptyContext();
    SecurityContextHolder.getContext().setAuthentication(token);

e sua classe Usuario deve implementar UserDetails do Spring

G

O pior que não tive muito tempo pro projeto e acabei configurando ele bem simples apenas no xml do spring security mesmo. Então é quase impossível conseguir essas informações ne ?

A
Solucao aceita

O que você vai precisar é de:

public class Usuario implements UserDetails {
       getUsername(): String
       getPassword(): String
       getAuthorities(): List<Perfil>

}

public class Perfil implements GrantedAuthority {

}

Após realizar o login com sucesso, você salva o Usuario no contexto do Spring Security

Criado 17 de maio de 2018
Ultima resposta 17 de mai. de 2018
Respostas 5
Participantes 2