【发布时间】:2015-03-24 05:28:55
【问题描述】:
我的自定义 Spring Security PermissionEvaluator 有问题。所以, CustomPermissionEvaluator 需要该服务来完成其工作。
@Service
public class MyService {
// methods....
}
这是评估器本身。
public class CustomPermissionEvaluator implements PermissionEvaluator {
private MyService service;
public CustromPermissionEvaluator( MyService service ) {
this.service = service;
}
// hasPermission methods...
}
这里是配置
@Configuration
@EnableGlobalMethodSecurity( prePostEnabled = true )
public class MethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {
@Autowired
private MyService service;
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
CustomPermissionEvaluator permissionEvaluator = new CustomPermissionEvaluator( service );
DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
expressionHandler.setPermissionEvaluator( permissionEvaluator );
return expressionHandler;
}
}
因此,当应该调用 @PreAuthorize("hasPermission( ... )" ) 时,什么也没有发生。但是,当我将该依赖项直接放在 CustomPermissionEvaluator 的构造函数中时,没有 ApplicationContext 和自动装配,一切都很完美。我已将服务对象打印到日志文件中,并且它不为空。那么,有什么问题呢?
【问题讨论】:
标签: spring security configuration autowired access-control