2014-09-26 3 views
0

Я использую модуль безопасности 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 {...} 

ответ

1

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

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

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

Смежные вопросы