Java 启用MethodSecurityInterceptor以发布AuthorizedEvent

Java 启用MethodSecurityInterceptor以发布AuthorizedEvent,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我想审核spring boot 2.X应用程序中的成功授权。 因此,我尝试开始侦听AuthorizedEvent,但该事件直到AbstractSecurityInterceptor.publishAuthorizationSuccess设置为true后才会发布 此应用程序主要使用@Secured和@PreAuthorize/@PostAuthorize注释,因此我尝试侦听的侦听器是MethodSecurityInterceptor(它还为我提供了针对FilterSecurityIntercept

我想审核spring boot 2.X应用程序中的成功授权。 因此,我尝试开始侦听
AuthorizedEvent
,但该事件直到
AbstractSecurityInterceptor.publishAuthorizationSuccess
设置为true后才会发布

此应用程序主要使用
@Secured
@PreAuthorize
/
@PostAuthorize
注释,因此我尝试侦听的侦听器是
MethodSecurityInterceptor
(它还为我提供了针对
FilterSecurityInterceptor
未授权的安全角色)

除了通过感觉脆弱的
BeanPostProcessor
之外,我看不到任何配置
MethodSecurityInterceptor
和启用事件发布的方法

是否有比通过spring security github repo中发布的BeanPostProcessor启用
MethodSecurityInterceptor.publishAuthorizationSuccess
更好的方法

据《每日邮报》报道,目前没有更好的方法来配置
MethodSecurityInterceptor
,他们在代码的这一部分做了改进,因此现在没有任何改进的意义

因此,配置
MethodSecurityInterceptor
的最佳方法是通过
BeanPostProcessor
如下所示:

@Component
public class MethodSecurityInterceptorPostProcessor implements BeanPostProcessor {

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof MethodSecurityInterceptor) {
            ((MethodSecurityInterceptor) bean).setPublishAuthorizationSuccess(true);
        }
        return bean;
    }
}

手动配置
MethodSecurityINterceptor
,它可能更脆弱。@M.Deinum是的,这是另一个选项,但正如您所指出的,它感觉更脆弱。总的来说,公开此配置对spring安全项目来说是值得的。