项目中使用了shiro做权限控制,在controller上注解了@RequiresPermissions,当没有权限时,会抛出异常,但是这个异常是在拦截器中抛出的,springboot的ControllerAdvisor无法捕捉到。请教下,如何进行处理?
2 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
没大明白你确切想做什么,如果你是想要一个统一的异常捕捉类的话,我可以给你提供一个思路。Spring可以通过注解和xml方式达到这样的效果。看你的风格应该是注解比较习惯的,那我讲讲简单的Ex抛出处理,首先创建一个MyExceptionAdviceHandler类,加上@ControllerAdvice注解,该注解是控制器的一个增强,作用于所有RequestMapping注解上(没有指定特定包的情况下),然后声明一个processException的方法,携带有一个Exception的参数ex,该方法需要对控制器的异常捕捉因此需要@ExceptionHandler,同时我建议再加上一个@ResponseBody注解,可以友好一点。然后声明一个ApiResponse对象并把ex异常注入其中然后返回,这样一个通用捕捉类就写好了。我写段样例代码吧,如果有不正的地方欢迎大牛拍砖指正。`@ControllerAdivcepublicclassMyExceptionHandler{@ResponseBody@ExceptionHandlerpublicApiResponseprocessEx(Exceptionex){ApiResponseresp=ApiResponse.responseError(ex);returnresp;}}`
添加回答
举报
0/150
提交
取消