明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用ASP讓用戶訪問(wèn)指定頁(yè)面

[摘要]一個(gè)網(wǎng)站有許多頁(yè)面,如果用戶知道某個(gè)頁(yè)面的鏈接,可以在瀏覽器中直接輸入url訪問(wèn)它。但這在一個(gè)要求有安全性的站點(diǎn)上是不允許的。我們要求用戶必須登錄以后才能訪問(wèn)各級(jí)頁(yè)面,有時(shí)也確實(shí)希望用戶總是先看到站點(diǎn)的主頁(yè)。這兩種要求可以通過(guò)在asp的global.asa中對(duì)session對(duì)象編程來(lái)實(shí)現(xiàn)。1.用戶...
一個(gè)網(wǎng)站有許多頁(yè)面,如果用戶知道某個(gè)頁(yè)面的鏈接,可以在瀏覽器中直接輸入url訪問(wèn)它。但這在一個(gè)要求有安全性的站點(diǎn)上是不允許的。我們要求用戶必須登錄以后才能訪問(wèn)各級(jí)頁(yè)面,有時(shí)也確實(shí)希望用戶總是先看到站點(diǎn)的主頁(yè)。這兩種要求可以通過(guò)在asp的global.asa中對(duì)session對(duì)象編程來(lái)實(shí)現(xiàn)。

1.用戶必須從主頁(yè)開(kāi)始瀏覽

如果僅希望用戶每次上站都先訪問(wèn)站點(diǎn)主頁(yè),可以在session的session_onstart事件中加入response.redirect “url"來(lái)實(shí)現(xiàn)。例如在global.asa中有如下代碼:

sub session—onstart

response.redirect ″netdoctor.yeah.net″

end sub

由于用戶在訪問(wèn)站點(diǎn)時(shí),一連接就會(huì)激發(fā)session的onstart事件,所以不管用戶在瀏覽器中輸入的是本站點(diǎn)上的何url,都會(huì)由于onstart事件中重定向命令的作用而轉(zhuǎn)向指定頁(yè)面。

2.必須是經(jīng)過(guò)驗(yàn)證的用戶才能瀏覽

對(duì)于有安全性要求的站點(diǎn),如果是intranet用戶,可以把驗(yàn)證與nt的用戶驗(yàn)證結(jié)合起來(lái),只要給指定目錄設(shè)定ntfs用戶權(quán)限,用戶訪問(wèn)時(shí)就會(huì)自動(dòng)彈出驗(yàn)證窗口。這種驗(yàn)證不需要使用asp編程實(shí)現(xiàn)。

實(shí)際情況是,我們不會(huì)把大量的internet用戶加入域用戶中,一般是用一個(gè)數(shù)據(jù)庫(kù)來(lái)管理用戶名和口令,由asp程序把從web頁(yè)面上取得的用戶名和口令到庫(kù)中進(jìn)行查找驗(yàn)證。如果一個(gè)用戶知道站點(diǎn)的目錄結(jié)構(gòu),有可能直接輸入某個(gè)頁(yè)面的url,從而避過(guò)登錄驗(yàn)證界面。這樣,登錄安全形同虛設(shè)。

如前所述,用戶與站點(diǎn)一連接,就會(huì)引發(fā)一個(gè)session—onstart事件,所以我們可以在這里強(qiáng)制它轉(zhuǎn)向登錄頁(yè)面。global.asa中的代碼如下:

sub session—onstart

response.redirect ″login.asp″

end sub  


3.辨析說(shuō)明

朋友們可以注意到,以上兩段代碼實(shí)際上是一樣的。但是,對(duì)于2中的情況,雖然一訪問(wèn)就轉(zhuǎn)向了登錄頁(yè)面,可是此時(shí)session的onstart事件已經(jīng)結(jié)束,如果再輸入指定的url,就可以避過(guò)安全檢測(cè)了。

我現(xiàn)在的解決方法是在每個(gè)asp頁(yè)面前加上下面一段代碼,來(lái)實(shí)現(xiàn)上面的功能:

〈%

if session(″userid″)=″″ then

response.redirect ″login.asp″

 end if

%〉  


其中,session變量是在用戶通過(guò)登錄后建立的一個(gè)在整個(gè)過(guò)程中都生效的變量,如在login.asp中,使用以下代碼:

if checkpwdok() then

session(″userid″)=request(″userid″)

end if  


不過(guò)這種辦法對(duì)站點(diǎn)的每個(gè)頁(yè)面都要如此處理。對(duì)asp頁(yè)面這么辦還可以,對(duì)html頁(yè)面文件就無(wú)能為力了。所以,本文在此拋磚引玉,希望能有朋友提出更好的辦法。