1
resposta

Como validar role

Olá! Eu atribui uma authoritie ao meu usuario: "ADMIN_001". Entretanto quando uso

.antMatchers("/api/usuario/**")
 .hasRole(EFuncionalidade.ADMIN_001.toString())

ele retorna forbidden. Creio que seja porquê o hasRole adiciona "ROLE_" antes do nome da authoritie. Como eu faço para resolver isso?

Desde já agradeço.

1 resposta

Olá Filipe

Só pra confirmar o fluxo, assim como a senha, o spring compara as roles em memoria. Assim, além de configurar o acesso da URL como você fez, você precisa lá na classe Usuário indicar quais são os perfis do usuário registrados no banco de dados pelo método getAuthorities(). Assim ele consegue ao resgatar o usuário, fazer a comparativa se ele pode ou não pode acessar. E na classe Perfil, deve ter o método getAuthority referenciando o nome do perfil. Chegou a fazer essa parte?

No entanto, o que tu comentou é verdade, o padrão das authorities deve começar com "ROLE_". Dependendo da versão do Spring pode ser levemente diferente, mas tente adicionar na classe principal SecurityConfiguration o seguinte trecho

@Bean
    GrantedAuthorityDefaults grantedAuthorityDefaults() {
        return new GrantedAuthorityDefaults(""); // Remove o padrao o ROLE_
    }