在ASP應用中驗證使用者身份(3)

來源:互聯網
上載者:User
三、使用者身分識別驗證

   為簡單計,本文只討論在伺服器端的使用者身分識別驗證。登入頁面是通過調用
ASPSecurity.inc中的signUserOn函數驗證使用者身份的。signUserOn檢查資料庫中
是否存在和使用者輸入的名字、密碼匹配的記錄:
function signUserOn(aSignon, aPassword)
dim dict
' 使用者輸入的名字
aSignon = lcase(trim(aSignon))
' 使用者輸入的密碼
aPassword = lcase(trim(aPassword))
' 提取使用者記錄轉換成Dictionary對象
set dict = getUser(aSignon)
' dict對象是否包含了合法的使用者資訊
if isUser(dict) then
if not dict("Password") = aPassword then
signUserOn = false
Session("msg") = "密碼錯誤."
exit function
end if

' 更新最後訪問時間
call updateLastOn(aSignon)

' 用SessionID (或不支援Cookies時,ID)標識使用者記錄
if not Session("SupportsCookies") then
Session("ID") = getID()
dict.Add "SessionID", Session("ID")
else
dict.Add "SessionID", Session.SessionID
end if

' 記錄最後啟用時間
dict.add "LastActivity", now()
' 在Session中記錄目前使用者資訊
set Session("User") = dict
' 將目前使用者加入正在訪問使用者列表
call addUserToApplication(dict)
signUserOn = true
else
Session("msg") = "使用者名稱稱錯誤"
signUserOn = false
end if
end function



   如果使用者輸入的名字和密碼與資料庫中的記錄匹配,signUserOn函數返回
True。此時,使用者被授權,Session("User")變數包含了一個Dictionary對象,其中
含有該使用者的資料庫記錄的欄位名稱和值。另外,這裡還把Dictionary對象加入到
Application("User")數組,這是為了便於獲得當前正在訪問安全網站的使用者清
單。 signUserOn用到了ASPSecurity.inc中的許多子過程。由於大多數子過程都很
相似,下面只討論其中的getUser。該函數先串連資料庫,然後提取對應的使用者記
錄,最後將記錄轉換為Dictionary對象並返回它,如下所示:
function getUser(aSignon)
dim conn
dim R
set conn = openConnection()
set R = conn.Execute("SELECT * FROM Users WHERE Users.Signon='" &
aSignon & "'")
if err.number < > 0 then
' 輸出錯誤資訊
......
response.end
end if
if not R.EOF then
set getUser = recordToDictionary(R)
else
set getUser = nothing
end if
R.Close
set R = nothing
conn.close
set conn = nothing
end function


   如果使用者在註冊頁面中單擊的是註冊按鈕,則在經過必要的檢查之後就可以在數
據庫中產生新的使用者記錄了。註冊成功的使用者會自動進入安全頁面,這一部分操作和
普通的登入過程是一樣的。

   身分識別驗證和註冊操作都將錯誤資訊儲存在Session("msg")變數中。這些錯誤信
息可以顯示在返回給使用者的HTML頁面中:
< %
if Session("msg") < > "" then
' 顯示錯誤資訊
......
Session("msg") = ""
end if
%>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.