2013年9月13日

Java Web App 除了自訂的登入機制,如何處理瀏覽器「上一頁」按鈕?

在建立 Java Web Application 時除了自訂的登入機制之外,常常會遇到使用者登出後卻點擊「上一頁」按鈕 ( go back ),造成登出後不應該顯示的資訊卻又出現了!這時候該如何處理這個狀況呢?相信很多人會想要強制把「上一頁」按鈕隱藏起來,不過這樣的作法可能讓使用者有不好的使用經驗。



當然原本的登入機制可以控管每個頁面的安全性,但瀏覽器會默默儲存網頁的資訊。所以當使用者按「上一頁」的按鈕時,瀏覽器會將之前儲存好的資料載入。因此為了解決這個問題我們可以透過增加 Filter 來讓瀏覽器不 Cache 資料。Filter 使用方法很簡單,首先我們可以先在 web.xml 裡面宣告自訂的 Filter ,參考內容如下:


可看到 web.xml 定義了自訂的 Filter Class 所在路徑與程式名稱 ( 如範例 : mercury.security.SecurityFilter ),接著設定哪些 Request URL  ( 如範例: /common/* ) 符合時要觸發該 Filter 。

接著來建立 Filter 程式,自訂的 Filter 程式須要實作 javax.servlet.Filter,所以必須實作三個 Method,分別為 initdoFilterdestroy。參考內容如下:


根據程式可發現到在 doFilter 裡面加入設定 HttpServletResponse 物件的 Header ,分別針對三個參數 Cache-ControlPragmaExpires 加入數值,透過增加範例中的數值告訴瀏覽器不需要再將網頁的資料 Cache 起來。如此一來搭配原有的安全機制就會更趨完整。


熱門文章