Безопасность на уровне метода с использованием SpELJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Безопасность на уровне метода с использованием SpEL

Сообщение Anonymous »

Я прочитал в документации Spring, что для включения метааннотаций уровня динамического метода мне нужно настроить класс AnnotationTemplateExpressionDefaults.
Я сделал это здесь

Код: Выделить всё

@Bean
public AnnotationTemplateExpressionDefaults annotationTemplateExpressionDefaults(){
return new AnnotationTemplateExpressionDefaults();
}
Затем я настроил аннотацию под названием HasAnyRole

Код: Выделить всё

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize(value = "hasAnyRole({roles})")
public @interface HasAnyRole {

String[] roles();
}
Затем я аннотировал метод ролью has и передал следующие роли

Код: Выделить всё

@PostMapping("/create")
@HasAnyRole(roles = {"'MANAGING_DIRECTOR'","'OPERATIONS_MANAGER'","'PROJECT_MANAGER'"})
public ResponseEntity createProject(@Valid @RequestBody ProjectCreationRequest projectCreationRequest)
throws ProjectNotCreatedException{
return projectService.generateProjectCreationRequest(projectCreationRequest);
}
Когда я вызвал этот метод, я получил ошибку Не удалось вычислить выражение 'hasAnyRole({roles})'"
Но в ходе дальнейших исследований я обнаружил, что это не работает с PreAuthorize, и мне нужно будет либо использовать AOP, либо создать собственный bean-компонент, который я могу использовать для разрешения аннотации hasAnyRole.
Мой вопрос в том, что я делаю неправильно, потому что я следовал документации и все еще не получил желаемого результата

Подробнее здесь: https://stackoverflow.com/questions/793 ... using-spel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»