filter 與 interceptor 說明


filter 與 interceptor 兩者有相似之處
都可以達到以下的應用

1.獲取headers裏的author-Cookie
2.根據cookie使用userService查找當前user
3.存在且激活 當前用戶信息設置到ThreadLocal return true;
4.不存在 或 未激活(auth) return false;
5.白名單/黑名單/Cors/Jwt/...

聽到上方的應用,應該有些聰明的夥伴已經知道了
大多都是使用web application方式進行的
例如:
當有人登入時,攔截後認證與授權
登入後操作,篩選特定依據使用者權限看是否可進行存取的驗證

filter 是優先於 interceptor
interceptor 有生命週期

filter 是有特定的介面已實作,我們可以依據情境使用。
通常我們都會複寫doFilterInternal進行一般的篩選
shouldNotFilter可以實作一些請求的黑名單/存取權限等。

  • Authentication
  • Logging and auditing
  • Image and data compression
  • Any functionality we want to be decoupled from Spring MVC

interceptor 是spring 系列
filter 是 servlet 系列
因此 filter 是獨立於spring外的

interceptor 因為有生命週期,可以處理的細度更多

  • Handling cross-cutting concerns such as application logging
  • Detailed authorization checks
  • Manipulating the Spring context or model

https://www.baeldung.com/spring-mvc-handlerinterceptor-vs-filter

雖然兩者都可以達到以上的功能混用也沒有說不行

而filter 本身還有分 filter 和OncePerRequestFilter
filter 有可能會經過很多次
OncePerRequestFilter 確保每次請求都只會僅來這一次filter
後續進行各別程式說明。


這不是一個給新手的一個教學過程,也寫的不是很完整
希望大家多多包涵囉~

主要是給自己的一個紀錄,也分享給有需要的夥伴

這是一個心血來潮,產生的文章

若有喜歡或交流的部分都歡迎在下方留言,多多關照。

#filter #interceptor







你可能感興趣的文章

HTB Blackfiled Walkthrough

HTB Blackfiled Walkthrough

切版~以為簡單的地方卻要考慮許多細節

切版~以為簡單的地方卻要考慮許多細節

[Swift 學習筆記] Closure : Inline function process

[Swift 學習筆記] Closure : Inline function process






留言討論