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


所属类别:Asp

文章作者:佚名

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


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

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

在执行Application_OnStart之后,ASP引擎创建一个Session对象并初始化SessionID,然后触发Session_OnStart事件。在这里可以初始化会话级(和特定用户相关的)变量和常量:sub Session_OnStartSession.Timeout=1' 数据库DSNSession("ConnectionString") = "ASPSecurity"Session("ConnectionTimeout") = 15' 读/写方式Session("Mode") = 3end sub

考虑到用户的浏览器可能不支持Cookies或关闭了Cookies功能,因此必须在第一个ASP页面中检查Cookies的支持情况并把结果保存在一个Session变量中。此外,当用户在登录页面中单击“登录”按钮,还应该检查用户输入的合法性,如下面的代码所示,其中ASPSecurity.inc提供一些公用函数(如signUserOn用于验证用户身份):< %@ Language=VBScript %>< % option explicit %>< % Response.buffer = true %>< !-- #INCLUDE FILE="ASPSecurity.inc" -->< %dim aSignondim aPassworddim dataValidateddataValidated = false' 检查浏览器是否支持CookiesSession("SupportsCookies") = (instr(1, Request.ServerVariables("HTTP_COOKIE"), "ASPSESSIONID", vbTextCompare) > 0)if Request("Action") = "登录" thenaSignon = lcase(trim(Request.Form("Signon")))aPassword = lcase(trim(Request.Form("Password")))if len(aSignon) = 0 thenSession("msg") = "请输入用户名字."end ifif len(aPassword) = 0 thenSession("msg") = "请输入密码."elsedataValidated=trueend ifif dataValidated thenif signUserOn(aSignon, aPassword) then' 用户身份被证实,允许进入受保护页面Response.Redirect "signedOn.asp?ID=" & Session("ID")end ifend ifelseif Request("Action") = "注册" thenResponse.Redirect "register.asp"end if%>

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

由于用户每次启动浏览器连接到服务器时SessionID都是不同的,所以不能直接用它来关联用户与存储在数据库中的相关信息,但SessionID可以用来临时地标识从数据库或文件提取的用户信息。对于那些不支持Cookies的浏览器,可以用另外的方法来创建唯一ID,如下面的getID使用的是随机函数:function getID() dim numbersdim lettersdim Idim IDRandomizenumbers="0123456789"letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"for I = 1 to 10if I mod 2 <> 0 thenID = ID & mid(letters, Int((26 * Rnd) + 1),1)elseID = ID & mid(numbers, Int((10 * Rnd) + 1),1)end ifnextgetID = IDend function 关闭本页

相关信息

· linux下的应用软件Calibre 介绍

· 详细了解JSP中九个隐含对象

· Visual Basic .NET 中动态加载类 (三)

· 在JSP中编写你的第一个Tag








....

26269 52207