Я использую модуль безопасности Deltaspike (1.0.3) с @Secured (функциональность, позволяющая интегрировать сторонние рамки безопасности). Хорошо работает, когда я использую только одну аннотацию (SecurityBinding) на уровне класса. Когда я добавляю вторую аннотацию в том же классе, CustomAccessDecisionVoter для второго securityBinding никогда не вызывается. Поскольку я понимаю api - возможно иметь кратные аннотации на уровне класса, но не работает в моем случае. Что я делаю неправильно?Множество Deltasike securityBindingType аннотации по классу
Это, как я объявляю 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 "...";
}
});
Anf finnally боб:
@Named("...")
@ViewScoped
//Permission
@AnnotationOne
@AnnotationTwo
public class Bean implements Serializable {...}