在ASP应用中验证用户身份(3)
2018-09-06 11:42
三、用户身份验证
为简单计,本文只讨论在服务器端的用户身份验证。登录页面是通过调用
是否存在和用户输入的名字、密码匹配的记录:
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用到了中的许多子过程。由于大多数子过程都很
相似,下面只讨论其中的getUser。该函数先连接数据库,然后提取对应的用户记
录,最后将记录转换为Dictionary对象并返回它,如下所示:
function getUser(aSignon)
dim conn
dim R
set conn = openConnection()
set R = conn.Execute(SELECT * FROM Users WHERE Users.Signon=
aSignon )
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页面中:
< %
then
显示错误信息
......
Session(msg) =
end if
%>