2015-03-29 14 views
9
Java Config kullanılarak yöntem güvenliğini uygulamak çalışıyorum

erişimi çözmek için, ama hata alıyorum: -bağlamda kayıtlı hiçbir fasulye çözümleyici fasulyesi

org.springframework.expression.spel.SpelEvaluationException: EL1057E:(pos 1): No bean resolver registered in the context to resolve access to bean 'appPermissionEvaluator' 

yöntemdir: -

@PreAuthorize("@appPermissionEvaluator.hasSystemPermission()") 
public String something() { 
    ... 
} 

Yapılandırma sınıf tanımı (MethodSecurityConfig.java) 'dir: -

@Configuration 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration { 

    @Bean 
    public AppPermissionEvaluator appPermissionEvaluator() { 
     return new AppPermissionEvaluator(); 
    } 

    @Override 
    protected MethodSecurityExpressionHandler createExpressionHandler() { 
     DefaultMethodSecurityExpressionHandler expressionHandler = 
       new DefaultMethodSecurityExpressionHandler(); 
     expressionHandler.setPermissionEvaluator(appPermissionEvaluator()); 
     return expressionHandler; 
    } 

    ... 
} 

ben fasulye autowire mümkün olduğumu kontrol Aynı sınıfta, ben de onları uygulamış olduğum gibi varsayılan withPermission() yöntemlerinin çalıştığını buldum, tek sorun, SpEL'den fasulye okuyor. Neyin yanlış olduğundan emin değilim. Herhangi bir işaretçi?

Spring 4.1.5 ve Bahar güvenliğini 3.2.7 Sen DefaultMethodSecurityExpresssionHandler üzerinde ApplicationContext set sağlamak için gereken

cevap

11

kullanıyorum. Örneğin: gibi tek PermissionEvaluator tanımlarsanız

Alternatif ve daha öz
@Autowired 
private ApplicationContext context; 

@Override 
protected MethodSecurityExpressionHandler expressionHandler() { 
    DefaultMethodSecurityExpressionHandler expressionHandler = 
      new DefaultMethodSecurityExpressionHandler(); 
    expressionHandler.setPermissionEvaluator(appPermissionEvaluator()); 
    handler.setApplicationContext(context); 
    return handler; 
} 

, bir Bean ve Bahar Güvenlik otomatik olarak alıp (gerek expressionHandler geçersiz kılmak için()). Örneğin,

@Bean 
public PermissionEvaluator appPermissionEvaluator() { 
    ... 
} 
İlgili konular