【发布时间】:2021-04-26 10:36:44
【问题描述】:
我正在尝试做这样的事情:
@Component
@Aspect
class CustomAspect {
@Pointcut("within(@com.example.security.Check *)")
public void classAnnotatedWithCheck() {}
@Pointcut("execution(public * *(..))")
public void publicMethod() {}
@Pointcut("publicMethod() && classAnnotatedWithCheck()")
public void publicMethodInsideAClassMarkedWithCheck() {}
@Around(value = "publicMethodInsideAClassMarkedWithCheck()")
public Object execute(ProceedingJoinPoint point) throws Throwable {
return executeWithFilter(point);
}
@PostFilter(value = "hasPermission(filterObject, 'READ')")
private Object executeWithFilter(ProceedingJoinPoint point) throws Throwable {
return point.proceed();
}
}
方面运行良好,但最后一个方法executeWithFilter 是在没有过滤的情况下完成的。同时,如果我将@PostFilter(value = "hasPermission(filterObject, 'READ')") 添加到常规服务方法中,过滤就会起作用。甚至可以在方面使用@PostFilter吗?
【问题讨论】:
标签: java spring-security spring-aop spring-security-acl