【過濾器異常全局處理異常】全局統一異常處理無法攔截filter中catch的異常


一、背景

系統定義了全局統一異常處理,使用了@RestControllerAdvice注解的方式。

鑒權使用的是JWT,使用filter對token進行解析和驗證。然后突然發現一個問題,就是當token過期時,拋出的異常無法通過全局統一異常處理對外返回,而是返回500。

 

二、原因

全局統一異常處理只能處理控制器中發生的異常。要在Spring Security過濾器鏈中重用此功能,需要定義過濾器並將其掛鈎到安全配置中。過濾器需要將異常重定向到統一異常處理中。

 

三、代碼

在filter中注入HandlerExceptionResolver

然后在catch中拋出

之后在GlobalExceptionHandlerAdvice中定義需要處理的異常類型,本文中用的是JwtException

這時便可以跟在業務代碼里面拋出的業務異常一樣處理了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM