Я сделал это здесь
Код: Выделить всё
@Bean
public AnnotationTemplateExpressionDefaults annotationTemplateExpressionDefaults(){
return new AnnotationTemplateExpressionDefaults();
}
Код: Выделить всё
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize(value = "hasAnyRole({roles})")
public @interface HasAnyRole {
String[] roles();
}
Код: Выделить всё
@PostMapping("/create")
@HasAnyRole(roles = {"'MANAGING_DIRECTOR'","'OPERATIONS_MANAGER'","'PROJECT_MANAGER'"})
public ResponseEntity createProject(@Valid @RequestBody ProjectCreationRequest projectCreationRequest)
throws ProjectNotCreatedException{
return projectService.generateProjectCreationRequest(projectCreationRequest);
}
Но в ходе дальнейших исследований я обнаружил, что это не работает с PreAuthorize, и мне нужно будет либо использовать AOP, либо создать собственный bean-компонент, который я могу использовать для разрешения аннотации hasAnyRole.
Мой вопрос в том, что я делаю неправильно, потому что я следовал документации и все еще не получил желаемого результата
Подробнее здесь: https://stackoverflow.com/questions/793 ... using-spel
Мобильная версия