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')") //允许