用ASP讓用戶訪問指定頁面
發(fā)表時間:2024-06-18 來源:明輝站整理相關軟件相關文章人氣:
[摘要]一個網站有許多頁面,如果用戶知道某個頁面的鏈接,可以在瀏覽器中直接輸入url訪問它。但這在一個要求有安全性的站點上是不允許的。我們要求用戶必須登錄以后才能訪問各級頁面,有時也確實希望用戶總是先看到站點的主頁。這兩種要求可以通過在asp的global.asa中對session對象編程來實現。1.用戶...
一個網站有許多頁面,如果用戶知道某個頁面的鏈接,可以在瀏覽器中直接輸入url訪問它。但這在一個要求有安全性的站點上是不允許的。我們要求用戶必須登錄以后才能訪問各級頁面,有時也確實希望用戶總是先看到站點的主頁。這兩種要求可以通過在asp的global.asa中對session對象編程來實現。
1.用戶必須從主頁開始瀏覽
如果僅希望用戶每次上站都先訪問站點主頁,可以在session的session_onstart事件中加入response.redirect “url"來實現。例如在global.asa中有如下代碼:
sub session—onstart
response.redirect ″netdoctor.yeah.net″
end sub
由于用戶在訪問站點時,一連接就會激發(fā)session的onstart事件,所以不管用戶在瀏覽器中輸入的是本站點上的何url,都會由于onstart事件中重定向命令的作用而轉向指定頁面。
2.必須是經過驗證的用戶才能瀏覽
對于有安全性要求的站點,如果是intranet用戶,可以把驗證與nt的用戶驗證結合起來,只要給指定目錄設定ntfs用戶權限,用戶訪問時就會自動彈出驗證窗口。這種驗證不需要使用asp編程實現。
實際情況是,我們不會把大量的internet用戶加入域用戶中,一般是用一個數據庫來管理用戶名和口令,由asp程序把從web頁面上取得的用戶名和口令到庫中進行查找驗證。如果一個用戶知道站點的目錄結構,有可能直接輸入某個頁面的url,從而避過登錄驗證界面。這樣,登錄安全形同虛設。
如前所述,用戶與站點一連接,就會引發(fā)一個session—onstart事件,所以我們可以在這里強制它轉向登錄頁面。global.asa中的代碼如下:
sub session—onstart
response.redirect ″login.asp″
end sub
3.辨析說明
朋友們可以注意到,以上兩段代碼實際上是一樣的。但是,對于2中的情況,雖然一訪問就轉向了登錄頁面,可是此時session的onstart事件已經結束,如果再輸入指定的url,就可以避過安全檢測了。
我現在的解決方法是在每個asp頁面前加上下面一段代碼,來實現上面的功能:
〈%
if session(″userid″)=″″ then
response.redirect ″login.asp″
end if
%〉
其中,session變量是在用戶通過登錄后建立的一個在整個過程中都生效的變量,如在login.asp中,使用以下代碼:
if checkpwdok() then
session(″userid″)=request(″userid″)
end if
不過這種辦法對站點的每個頁面都要如此處理。對asp頁面這么辦還可以,對html頁面文件就無能為力了。所以,本文在此拋磚引玉,希望能有朋友提出更好的辦法。