如何在springboot中註冊severletFilter

問題起源

之前好好的項目突然之間訪問不了,在postman測試所有接口都顯示AES解密失敗,推測可能是請求接口時加入瞭解密,查看配文件發現多了一個配置
xxx.cipher.enabled=true
註釋寫的是啓用加密
如是就去探究了一下這個加密是如何實現

實現

在這裏插入圖片描述
發現了這個類,可以看到當配置的值value爲true時這個配置類就會生效(@ConditionalOnProperty滿足條件時配置類就會生效),那麼這個配置類是幹什麼的呢,其實主要就是注入了兩個bean,一個EncryService,一個FilterRegistrationBean,其實再仔細觀察就是注入FilterRegistrationBean,EncryService是用來對請求響應做加密解密的

百度了一下FilterRegistrationBean是幹什麼的,簡言之就是一句話:FilterRegistrationBean配置自定義攔截器攔截路徑,由於springboot裏面是沒有xml文件來配置攔截器的,所以springboot提供了FilterRegistrationBean來配置自定義攔截器

那麼如何使用FilterRegistrationBean來配置自定義路勁攔截器呢
上圖中的代碼就可以看出主要有三個步驟

  • 自定義一個Filter
  • 構建一個FilterRegistrationBean,並且將構建的Filter設置到構建的FilterRegistrationBean中
  • 最後將構建的FilterRegistrationBean注入到spring中

總結

這個加密解密的過程就是自定義一個Filter攔截器,實現對路徑的攔截,只不過之前使用的是web.xml來配置自定義攔截器,在springboot使用FilterRegistrationBean來注入Filter而已

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章