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.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
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_
    }