【bug日志】在全局异常处理器中负责处理AccessDeniedException的异常,总是会被Exception异常处理器捕获到

bug产生如图所示

在这里插入图片描述

在全局异常处理器中更具体的异常AccessDeniedException没有被捕获到,反而捕获到了RuntimeException异常。

从图中看出绿色的debug具体的异常为AccessDeniedException,但是却没有走accessDeniedExceptionHandler函数

在这里插入图片描述

网上搜索无果之后,将代码逻辑改成如此。但是if语句的执行结果为false之后,才发现IDEA自动引入的包名为import java.nio.file.AccessDeniedException;而实际需要的包为import org.springframework.security.access.AccessDeniedException;因此所产生的错误。修改之后就能成功解决

补充Spring Security的知识点

http.exceptionHandling().accessDeniedHandler((req, resp, e) -> {
    ServletUtils.writeJson(ResponseDataUtil.buildSend(ResultEnums.LOGIN_USER_ACCESS_DENIED));
});

关于accessDeniedHandler没有执行反而被异常处理器捕获的bug

参考文章:https://blog.51cto.com/u_11334685/5740164

由于SpringSecurity异常处理是在用的是Javaweb中的filter进行处理,而不是SpringMvc的过滤器中,而在返回请求时SpringMvc的方法总是在filter之前执行(在请求进来时反之,简单理解成SpringMvc运行在Javaweb的环境中),所以全局异常处理器会在filter之前执行

参考文章:https://blog.csdn.net/weixin_43702146/article/details/118606502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值