关于SpringSecurity 自定义 AccessDeniedHandler 不生效的疑问
问题描述:
在 Security配置类中配置了 AccessDeniedHandler,但是发现实际运行时 AccessDeniedHandler 没有被触发。
问题原因:
因为项目中还配置了 GlobalExceptionHandler 。就是出现此种问题的原因一般都
由于GlobalExceptionHandler 全局异常处理器会比 AccessDeniedHandler 先捕获 AccessDeniedException 异常,因此当部署了 GlobalExceptionHandler 后,会发现 AccessDeniedHandler 失效了。
解决方案:
在原有的 GlobalExceptionHandler 中添加一个AccessDeniedException捕获异常:
@ExceptionHandler(AccessDeniedException.class)
public void accessDeniedException(AccessDeniedException e) throws AccessDeniedException {
throw e;
}