Несколько аннотаций Deltasike securityBindingType для класса

Я использую модуль безопасности Deltaspike (1.0.3) с @Secured (функциональность, позволяющая интегрировать сторонние платформы безопасности). Работает хорошо, когда я использую только одну аннотацию (SecurityBinding) на уровне класса. Когда я добавляю вторую аннотацию для того же класса, CustomAccessDecisionVoter для второй securityBinding никогда не вызывается. Как я понимаю, API - возможно иметь несколько аннотаций на уровне класса, но не работает в моем случае. Что я делаю не так?

Вот как я объявляю SecurityBinding:

@Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Documented
@Stereotype
@Secured(AnnotationOneAccessDecisionVoter.class)
public @interface AnnotationOne {
}

Это пользовательский AccessDecisionVoter для AnnotationOne:

@ApplicationScoped
public class AnnotationOneAccessDecisionVoter implements AccessDecisionVoter {


public Set<SecurityViolation> checkPermission(AccessDecisionVoterContext voterContext) {

    Set<SecurityViolation> violations = new HashSet<SecurityViolation>(1);
    if(some validation...) {
        violations.add(new SecurityViolation() {
            private static final long serialVersionUID = ...;
            @Override
            public String getReason() {
                return "...";
            }
        });

И, наконец, боб:

@Named("...")
@ViewScoped
//Permission
@AnnotationOne
@AnnotationTwo
public class Bean implements Serializable {...}

1 ответ

Решение

Большое спасибо за Герхарда Петрасека и команду Deltaspike за быстрый ответ в списке рассылки deltaspike для пользователей.

Конкретные функциональные возможности на данный момент не поддерживаются, но исправление было добавлено для версии 1.0.4 (в настоящее время в снимке)

https://issues.apache.org/jira/browse/DELTASPIKE-735

Другие вопросы по тегам