WEB系統身份校驗

在web系統中,身份校驗是常用的方式。登錄頁面,是爲用戶提供登錄的入口。但是,有的時候,我們使用ajax操作的時候,由於得不到正確的數據信息,而使頁面停留不能跳轉到登錄頁面。其實,http協議的請求頭可以幫我們輕鬆解決這個問題。

在JavaEE的規範中,攔截器,是我們對資源請求的一種過濾方式,而對於安全頁面的身份校驗,我們也採用了這樣的方式。通常情況下,我們在攔截器中,獲取匿名用戶要請求的頁面是需要身份校驗,那麼我們需要跳轉到登錄頁面,提示用戶輸入用戶信息。

但是,由於ajax採用異步加載數據信息,獲取的爲text、json、xml等格式數據。這個時候,當我從服務器響應到客戶端的如果是登錄頁面。ajax是無法正確解析這個頁面信息,於是就會出現如下現象:
1. 在彈出層中加載出登錄頁面
2. 無法識別json、xml數據(html不是數據信息)

其實,在攔截器中,我們可以通過HttpServletRequest對象,讀取Header信息就可以區分,當前請求是ajax還是普通請求。基於jquery的ajax,在請求頭中有如下配置:

X-Requested-With:XMLHttpRequest

那麼,我們可以通過

request.getHeader("X-Requested-With");

當我們判斷是ajax請求的時候,我們響應到客戶端的信息就做一下處理。告訴ajax,你需要跳轉登錄頁面。

當然,到現在,我們的工作並沒有結束,我們還需要設置一下$.ajaxSetup(),具體配置如下:


$.ajaxSetup({
    timeout: 3000, // 超時時間
    error: function(xhr, status, msg) {
        // 這裏可以從xhr中讀取,服務器響應回來的數據信息
    }
});

通過ajaxSetup可以在全局設置jquery的ajax屬性,避免,每一個ajax單獨配置。





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