SpringBoot Security Oauth2 função e método de anotação de autenticação de permissão hasRole e hasAuthority usam diferença

SpringBoot Security definir resultados do teste de permissão

ADMIN2, ROLE_ADMIN

String[] permissions = "ADMIN2,ROLE_ADMIN".split(",");
List<GrantedAuthority> authorities = new ArrayList<>();
for (String permission : permissions) {
    authorities.add(new SimpleGrantedAuthority(permission));
}
userDetails.setAuthorities(authorities);

Adicione o resultado do teste de permissão de anotação do método no controlador:

@PreAuthorize("hasRole('ADMIN')")                //允许
@PreAuthorize("hasRole('ROLE_ADMIN')")           //允许
@PreAuthorize("hasRole('ADMIN2')")               //不允许
@PreAuthorize("hasRole('ROLE_ADMIN2')")          //不允许
@PreAuthorize("hasAuthority('ADMIN2')")          //允许
@PreAuthorize("hasAuthority('ROLE_ADMIN2')")     //不允许
@PreAuthorize("hasAuthority('ADMIN')")           //不允许
@PreAuthorize("hasAuthority('ROLE_ADMIN')")      //允许

O teste mostra:

Adicione o prefixo ROLE_ para verificar as permissões de três maneiras:

@PreAuthorize("hasRole('ADMIN')")                //允许
@PreAuthorize("hasRole('ROLE_ADMIN')")           //允许
@PreAuthorize("hasAuthority('ROLE_ADMIN')")      //允许

Só existe uma maneira de verificar as permissões sem aumentar ROLE_:

@PreAuthorize("hasAuthority('ADMIN2')")          //允许

 

Acho que você gosta

Origin blog.csdn.net/ipifei/article/details/108439183
Recomendado
Clasificación