1. 程式人生 > 其它 >Spring&SpringBoot攔截器使用相關問題

Spring&SpringBoot攔截器使用相關問題

Spring&SpringBoot攔截器使用相關問題

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