亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SpringBoot中如何處理Controller之前的異常

SpringBoot中如何處理Controller之前的異常

繁星coding 2018-08-04 13:05:59
項目中使用了shiro做權限控制,在controller上注解了@RequiresPermissions,當沒有權限時,會拋出異常,但是這個異常是在攔截器中拋出的,spring boot的ControllerAdvisor無法捕捉到。請教下,如何進行處理?
查看完整描述

2 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

最后,是通過增加了一個HandlerInterceptor,這個方法可行,但是處理異常的地方就變成了兩處,另一個是controller層異常的統一處理,總覺得不是太好的方案。

@Component
public class PreControllerExceptionIntercep implements HandlerInterceptor {

private static final Logger log = LoggerFactory.getLogger(PreControllerExceptionIntercep.class);

@Override

public void afterCompletion(HttpServletRequest request , HttpServletResponse response,Object handler,Exception ex) throws Exception{

    if(ex instanceof UnauthenticatedException){

        log.info("the access isn't valid");

        PackVo packVo = new PackVo();

        packVo.setSuccess(false);

        packVo.addMsg(BizExceptionCode.NO_PERMISSION_EXCEPTION,"");

        String jsonPack = JSON.toJSONString(packVo);

        response.setContentType("application/json;charset=UTF-8");

        response.setHeader("Pragma","No-cache");

        response.setHeader("Cache-Control","no-cache");

        response.setDateHeader("Expires",0);

        PrintWriter out = response.getWriter();

        out.print(jsonPack);

        out.flush();

        out.close();

    }


}


查看完整回答
反對 回復 2018-08-07
  • 2 回答
  • 0 關注
  • 1949 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號