當然原本的登入機制可以控管每個頁面的安全性,但瀏覽器會默默儲存網頁的資訊。所以當使用者按「上一頁」的按鈕時,瀏覽器會將之前儲存好的資料載入。因此為了解決這個問題我們可以透過增加 Filter 來讓瀏覽器不 Cache 資料。Filter 使用方法很簡單,首先我們可以先在 web.xml 裡面宣告自訂的 Filter ,參考內容如下:
可看到 web.xml 定義了自訂的 Filter Class 所在路徑與程式名稱 ( 如範例 : mercury.security.SecurityFilter ),接著設定哪些 Request URL ( 如範例: /common/* ) 符合時要觸發該 Filter 。
接著來建立 Filter 程式,自訂的 Filter 程式須要實作 javax.servlet.Filter,所以必須實作三個 Method,分別為 init、doFilter、destroy。參考內容如下:
根據程式可發現到在 doFilter 裡面加入設定 HttpServletResponse 物件的 Header ,分別針對三個參數 Cache-Control、Pragma、Expires 加入數值,透過增加範例中的數值告訴瀏覽器不需要再將網頁的資料 Cache 起來。如此一來搭配原有的安全機制就會更趨完整。