Java 启用MethodSecurityInterceptor以发布AuthorizedEvent
我想审核spring boot 2.X应用程序中的成功授权。 因此,我尝试开始侦听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
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安全项目来说是值得的。