Привет, У меня есть проект с Spring boot + Spring Security. Я строй пользовательских аннотаций, которые я определил, как это:Используйте выражения весенней безопасности в пользовательской аннотации
@Retention(RUNTIME)
@Target(METHOD)
public @interface CustomAnnotation {
String condition();
String[] fields() default {};
}
Этой аннотация будет применяться по методам классов. Я хочу, чтобы параметр «condition» был «выражением безопасности пружины», которое я буду оценивать в аспекте, который будет оценивать выражение, и если он истинен, он будет делать некоторую логику.
Аспект определяется следующим образом:
@Pointcut("@annotation(customAnnotation)" )
public void pointcutForCustomAnnotation(CustomAnnotation customAnnotation) {
// Do nothing.
}
@Around("pointcutForCustomAnnotation(customAnnotation)")
public Object customAspect(ProceedingJoinPoint pjp, CustomAnnotation customAnnotation) throws Throwable {
// Here should go the logic to evaluate spring security expression
String condition = customAnnotation.condition();
String[] fieldsToHide = customAnnotation.fields();
}
Когда я имею в виду выражение безопасности Spring, я имею в виду те, которые используются в @Preauthorize, @PostAuthorize, @PreFilter @PostFilter пружинных аннотациями. Например:
hasRole('ROLE_USER')
isAuthenticated()
Как я могу оценить выражение безопасности пружины в аспекте? Я предполагаю, что я мог бы легко взять рамки пружинного класса я, что делает эту работу