|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在浏览器/服务器应用中,假如答应客户使用浏览器通过匿名身份访问网页,那么进一步限制客户访问详细的网页通常要客户表明身份(例如提示登陆),在网页初始部分验证客户的身份,假如通过身份验证,则可浏览到网页的详细内容,否则提示访问受到限制。 一般的浏览器/服务器应用应有一个主页,其上有进入不同网页的超链接。在Active Server Page应用中,我们知道,可以在进入主页时进行一次登录,把登录成功信息保存会话变量中,然后在进入该应用的其它网页时,只需检验这个会话变量,无需再做登陆验证。通常的做法是在每个网页的开始部分检验客户是否登录过,假如没有登录,转入登陆页完成登陆;假如登陆过,则显示网页内容。扩展这种检查,可以进一步检查不同的客户能否访问网页内容,假如无权访问,给出提示。不过这种在进入到详细的网页后才验证身份,对于无权访问该网页的客户来说就有一种进入死胡同的感觉。假如能够在超链接点击时即给予无权访问的提示,并且保持超链接不向下进入,可以给客户一个更好的印象。 要做到这一点,首先要限制客户直接在地址栏输入受限网页的名字进入,保证客户从一公共入口网页(比如主页)进入,然后在链接受限网页的公共入口网页页上根据客户身份来确定他能否进入即可。限制的方式是设立一个网页可进入标志。假如客户从公共网页上进入,在公共网页上设立答应标志,在每个受限网页的开始部分检查这个标志,假如标志为不答应,说明客户企图直接在地址栏输入网页的名字进入,提示访问受限,不显示内容或转入登录网页。 另一项工作是在公共网页上检查其上的受限网页的超链接,假如答应客户进入,在进入受限网页检查完进入标志后,立刻清除答应标志;假如不答应进入,点击超链接时给予提示。下面是源代码。 以下文件为受限网页,取名为page1.asp < %@ Language=VBScript % > < % if not Session("fromdefaultpage") then //检查进入标志 Response.Write "不是从公共网页进入,不能浏览本页内容。" Response.end else Session("fromdefaultpage")=false //取消答应进入 end if % > < HTML > < HEAD > < META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0" > < /HEAD > < BODY > < P >这是本页的正常内容。< /P > < /BODY > < /HTML > 以下文件为公共入口网页,取名为page.asp < < %@ Language=VBScript % > < % dim conn,rs,acl set conn=Server.CreateObject("ADODB.Connection") ConnectionString = "DSN=mssql;Description =Microsoft SQL Server 7.0; SERVER=wwwserver; UID=ddy;APP=vi6;WSID=WANGPUQUAN;DATABASE=webapp" conn.ConnectionTimeout = 30 conn.Mode = 3 conn.Open Connectionstring,"ddy","2louddy" set rs=conn.Execute ("select acl from userlist where username=\\\'u1\\\'") if not rs.EOF then acl=rs(0) end if set rs=nothing set conn=nothing session("fromdefaultpage")=true % > < HTML > < HEAD > < META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0" > < script language=javascript > function checkright() { var curElement=event.srcElement if ("A"==curElement.tagName) { var ss="< % =acl % >" var re=new RegExp(","+curElement.id+",","i") if (ss.search(re) >=0) { alert("由于权限不足,不能访问此页!") return false } else { return true } } } < /script > < /HEAD > < BODY onclick="return checkright()" > < p >这是公共入口页,在点击文档内容区时, 文档的onclick事件将检查点击的是否超链接, 假如是,将进一步检查其id是否在禁止访问的列表(,page1,page2,page3,) 中,假如在列表中,提示访问受限,不许进入; 假如不在列表中??许进入】lt; /p > < P >< a id=page1 href= Page1.asp > 为了限制page1.asp被访问,此处设定id为page1, 点击此超链接不能进入 < /a >< /P > < P >< a id=page5 href= Page1.asp > 假如不限制page1.asp环梦剩?设定id为page0, 点击此超链接可以进入 < /a >< /P > < /BODY > < /HTML > page.asp的说明: 一、 为了节省篇幅,此文省略了登录网页,查询访问权限时使用了名为u1的用户名。 二、 用户权限数据库表结构如下: 字段名 字段类型 字段描述 username char(10) 用户名 password char(10) 口令 acl varchar(1800) 禁止访问列表 三、 acl字段中保存禁止访问的ID列表,此例中对应用户u1的acl值为",page1,page2,page3,"。 四、 为了便于治理,可以把ID取作禁止访问的网页的文件名,超链接标记的ID与引用的网页文件名一样即可。此例中为简便起见,两个超链接引用了一样的网页,但分配了不同的ID值,其中page1在禁止访问列表中,因而不可访问,page0不在禁止访问列表中。 此例中是在每次进入公共入口页中查找访问控制列表,这样做的代价是频繁访问数据库。实际上可以在首次访问该页时把取出的acl值保存在会话变量中,在会话结束前再次访问只需访问会话变量即可,不过这样做在用户较多时服务器需要较多的内存来保存这些变量。可以视实际情况决定使用那一种方式。 返回类别: 教程 上一教程: ASP实现备份SQL SERVER数据 下一教程: ASP分页的一个类 您可以阅读与"ASP网页访问权的控制"相关的教程: · ASP中简易用户访问控制-1 · ASP中简易用户访问控制-2 · ASP+SQL Server构建网页防火墙 · 动态网页技术--CGI:ASP:JSP:PHP(4) · 用ASP实现WEB页面分用户权限的访问 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |