我尝试编写自己的PermissionEvaluator命令。这是:
public class PermissionEvaluatorImpl implements PermissionEvaluator {
public PermissionEvaluatorImpl() {
}
@Override
public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) {
final CustomUser customUser = (CustomUser) authentication.getPrincipal();
//Some custom logic
System.out.println("TEST");
return false;
}
@Override
public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permission) {
System.out.println("TEST");
return false;
}
}
主要问题,我理解的是对DefaultMethodSecurityExpressionHandler
说,必须使用我的。@Bean
DefaultMethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler(){
DefaultMethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler = new DefaultMethodSecurityExpressionHandler();
defaultMethodSecurityExpressionHandler.setPermissionEvaluator(new PermissionEvaluatorImpl());
return defaultMethodSecurityExpressionHandler;
}
。我尝试过很多方法:
@PreAuthorize
尝试自动装配它(因为它注释了@Component,我可以在所有初始化后更改它的字段),但它仍然无法正常工作。
我还试图创建我的PermissionEvaluator @Component,然后在DefaultMethodSecurityExpressionHandler的字段中设置它。这种方式是一样的(没有用)。
我还想,我把_post_put_hook()
放在了不正确的位置,所以我用这个注释标记了所有图层(Controller,Service,DAO)。仍然没有工作