在瀏覽器/伺服器應用中,如果允許客戶使用瀏覽器通過匿名身份訪問網頁,那麼進一步限制客戶訪問具體的網頁通常要客戶表明身份(例如提示登陸),在網頁初始部分驗證客戶的身份,如果通過身分識別驗證,則可瀏覽到網頁的具體內容,否則提示訪問受到限制。
一般的瀏覽器/伺服器應用應有一個首頁,其上有進入不同網頁的超連結。在Active Server Page應用中,我們知道,可以在進入首頁時進行一次登入,把登入成功資訊儲存會話變數中,然後在進入該應用的其它網頁時,只需檢驗這個會話變數,無需再做登陸驗證。通常的做法是在每個網頁的開始部分檢驗客戶是否登入過,如果沒有登入,轉入登陸頁完成登陸;如果登陸過,則顯示網頁內容。擴充這種檢查,可以進一步檢查不同的客戶能否訪問網頁內容,如果無權訪問,給出提示。不過這種在進入到具體的網頁後才驗證身份,對於無權訪問該網頁的客戶來說就有一種進入死胡同的感覺。如果能夠在超連結點擊時即給予無權訪問的提示,並且保持超連結不向下進入,可以給客戶一個更好的印象。
要做到這一點,首先要限制客戶直接在地址欄輸入受限網頁的名字進入,保證客戶從一公用入口網頁(比如首頁)進入,然後在連結受限網頁的公用入口網頁頁上根據客戶身份來確定他能否進入即可。限制的方法是設立一個網頁可進入標誌。如果客戶從公用網頁上進入,在公用網頁上設立允許標誌,在每個受限網頁的開始部分檢查這個標誌,如果標誌為不允許,說明客戶企圖直接在地址欄輸入網頁的名字進入,提示訪問受限,不顯示內容或轉入登入網頁。
另一項工作是在公用網頁上檢查其上的受限網頁的超連結,如果允許客戶進入,在進入受限網頁檢查完進入標誌後,立即清除允許標誌;如果不允許進入,點擊超連結時給予提示。下面是原始碼。
以下檔案為受限網頁,取名為page1.asp
< %@ Language=VBScript % >
< % if not Session("fromdefaultpage")
then //檢查進入標誌
Response.Write "不是從公用網頁進入,不能瀏覽本頁內容。"
Response.end
else
Session("fromdefaultpage")=false
//取消允許進入
end if
% >
< HTML >
< HEAD >
< META NAME="GENERATOR"
Content="Microsoft Visual Studio 6.0" >
< /HEAD >
< BODY >
< P >這是本頁的正常內容。< /P >