0

@Secured(サードパーティのセキュリティフレームワークを統合できる機能)でDeltaspike(1.0.3)セキュリティモジュールを使用しています。クラス レベルで 1 つの注釈 (SecurityBinding) のみを使用すると、うまく機能します。同じクラスに 2 つ目のアノテーションを追加すると、2 つ目の securityBinding の CustomAccessDecisionVoter は呼び出されません。私がAPIを理解しているように、クラスレベルで複数の注釈を持つことは可能ですが、私の場合は機能していません。私が間違っていることは何ですか?

これは、SecurityBinding を宣言する方法です。

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

これは、AnnotationOne のカスタム AccessDecisionVoter です。

@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 最後に Bean:

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

1 に答える 1