欢迎光临爱时尚女性网
 

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

2012-12-3 编辑:admin 来源:爱时尚女性网 阅读次数:436
  导读:一、示例站点概貌 本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现 过程。我们把用户信息保存在Web服务器上的一个access97数据库中,DSN名称为 ASPSecurity。唯一的数据库表拥有以下字段:Signon(文本,注册的用户名), PassWord(文本,密码)...
一、示例站点概貌


本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现
过程。我们把用户信息保存在Web服务器上的一个access97数据库中,DSN名称为
ASPSecurity。唯一的数据库表拥有以下字段:Signon(文本,注册的用户名),
PassWord(文本,密码),LastOn(文本,用户最后一次访问时间),TimedOut
(是/否,是否由于超时而被系统终止会话)。


系统主要包括以下几个页面:


default.htm —— 重定向浏览器到signon.asp页面。


signon.asp —— 提供登录系统界面。


signedOn.asp —— 成功登录系统之后显示的页面。


register.asp —— 新用户注册页面。


缺省页面default.htm只用于将浏览器重定向到signon.asp登录页面,这由下
面这个META标记实现:


< META HTTP-EQUIV="REFRESH" CONTENT="1; URL=signon.asp">


signedOn页面是整个站点唯一受保护的页面,必须经过身份验证才能访问。
二、初始化以及用户输入合法性检查


当一个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变量中。此外,
当用户在登录页面中单击“登录”按钮,还应该检查用户输入的合法性,如下面的代
码所示,其中ASPSecurity.inc提供一些公用函数(如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
("HTTP_COOKIE"), "ASPSESSIONID", vbTextCompare) > 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
if I mod 2 <> 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

文章出自:爱时尚女性网www.aspjc.com,尊重版权是美德,转载请保留原地址,感谢合作!

 
 
链接交换请联系:QQ:790646582 首页链接要求百度快照在一周以内,不符合以上要求的各站,我们将定期把友情连接转入内页,谢谢合作。
Copyright @ 2012-2015 爱时尚女性网 保留所有权利吉ICP备14005127号-1 服务QQ:175529508 e-mail:zk8312@163.com
本站部分资源来自网友上传,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。