在ASP应用中验证用户身份(2)

2018-09-06 12:29

阅读:401

  二、初始化以及用户输入合法性检查

当一个ASP应用启动的时候,IIS就会寻找一个global.asa文件。如果该文件存
在,就开始执行Application_onStart。在这里可以初始化应用级的变量和常量。下
面的代码在Application_OnStart中初始化一个数组来跟踪任意时刻登录系统的所有
用户:

Sub Application_OnStart
Application(Users) = Array()
End Sub

在执行Application_OnStart之后,ASP引擎创建一个Session对象并初始化
SessionID,然后触发Session_OnStart事件。在这里可以初始化会话级(和特定用
户相关的)变量和常量:

sub Session_OnStart
Session.Timeout=1
数据库DSN
Session(ConnectionString) = ASPSecurity
Session(ConnectionTimeout) = 15
读/写方式
Session(Mode) = 3
end sub

考虑到用户的浏览器可能不支持Cookies或关闭了Cookies功能,因此必须在第
一个ASP页面中检查Cookies的支持情况并把结果保存在一个Session变量中。此外,
当用户在登录页面中单击“登录”按钮,还应该检查用户输入的合法性,如下面的代
码所示,其中提供一些公用函数(如signUserOn用于验证用户身
份):

< %@ Language=VBScript %>
< % option explicit %>
< % Response.buffer = true %>
< !-- #INCLUDE FILE=ASPSecurity.inc -->
< %
dim aSignon
dim aPassword
dim dataValidated
dataValidated = false
检查浏览器是否支持Cookies
Session(SupportsCookies) = (instr(1, Request.ServerVariables
0)
if Request(Action) = 登录 then
aSignon = lcase(trim(Request.Form(Signon)))
aPassword = lcase(trim(Request.Form(Password)))
if len(aSignon) = 0 then
Session(msg) = 请输入用户名字.
end if
if len(aPassword) = 0 then
Session(msg) = 请输入密码.
else
dataValidated=true
end if
if dataValidated then
if signUserOn(aSignon, aPassword) then
用户身份被证实,允许进入受保护页面
Response.Redirect signedOn.asp?ID= Session(ID)
end if
end if
elseif Request(Action) = 注册 then
Response.Redirect register.asp
end if
%>


对于注册页面,除了要检查用户是否完整地输入所有内容之外,还应该检查两次
输入密码是否相同、用户名字是否与数据库中已有记录冲突等。实现代码请参见本文
所附的ZIP文件。

由于用户每次启动浏览器连接到服务器时SessionID都是不同的,所以不能直接
用它来关联用户与存储在数据库中的相关信息,但SessionID可以用来临时地标识从
数据库或文件提取的用户信息。对于那些不支持Cookies的浏览器,可以用另外的方
法来创建唯一ID,如下面的getID使用的是随机函数:

function getID() dim numbers
dim letters
dim I
dim ID
Randomize
numbers=0123456789
letters = ABCDEFGHIJKLMNOPQRSTUVWXYZ
for I = 1 to 10
0 then
ID = ID mid(letters, Int((26 * Rnd) + 1),1)
else
ID = ID mid(numbers, Int((10 * Rnd) + 1),1)
end if
next
getID = ID
end function


评论


亲,登录后才可以留言!