Spring&SpringBoot攔截器使用相關問題
阿新 • • 發佈:2021-11-11
Spring&SpringBoot攔截器使用相關問題
- 攔截轉發別用
response.getWriter()
的方式- 原因 : 使用
response.getWriter().println()
或response.getWriter().writer()
方法向前端回寫JavaScript片段進行攔截頁面跳轉的方式 . 當未登入且你請求的url被攔截成功併成功執行該方法後 , 你請求的的這個url就會被永久性的繫結該JavaScript片段 . 後續你登入後再請求該url , 不會被攔截器攔截,但是因為這個url已經被永久綁定了那個頁面跳轉的JavaScript片段 , 所以本次請求還是會跳轉至JavaScript片段指定的路徑 . 而你直接進行登入授權不被攔截器攔截的話就不會有這個場景復現.- 解決 : 直接使用
response.sendRedirect()
- 解決 : 直接使用
- 原因 : 使用
- 使用ehcache進行靜態資源快取時 , 別對.html , .jsp 等頁面檔案進行快取
- 原因 : 如果使用了ehcache對頁面檔案進行快取 , 在登入授權後訪問過被攔截的一個頁面檔案後 , 後續就算登出了登入授權 , 再次訪問該頁面檔案時 , 因為存在快取 , 會直接返回快取中的頁面檔案進行顯示 , 而不會經過攔截器對其進行攔截 , 這樣就會使得攔截器失去了意義
- 解決 : SimplePageCachingFilter的配置中 ,
addUrlPatterns
.html
檔案即可
- 解決 : SimplePageCachingFilter的配置中 ,
- 原因 : 如果使用了ehcache對頁面檔案進行快取 , 在登入授權後訪問過被攔截的一個頁面檔案後 , 後續就算登出了登入授權 , 再次訪問該頁面檔案時 , 因為存在快取 , 會直接返回快取中的頁面檔案進行顯示 , 而不會經過攔截器對其進行攔截 , 這樣就會使得攔截器失去了意義
- 瀏覽器如果
網路欄
中開啟了快取 , 在登入授權後訪問過被攔截的一個頁面檔案後 , 後續登出了登入授權 , 再次訪問該頁面檔案時 , 因為存在快取 , 會直接返回快取中的頁面檔案進行顯示 , 而不會經過攔截器對其進行攔截 , 但該快取存活時間極短 , 第二次請求同一個頁面檔案時就不會走快取而是請求伺服器進入攔截器- 目前沒有找到解決方法 , 但因其生存時間的特殊性 , 應該不會產生什麼影響