asp实现web页面分用户权限的访问
作 者 : 甘冀平
问题的引出
前几日上网,看到有网友在电脑报论坛的asp版提出如下的问题:“我试着用asp的方法为网页设置了口令,但
是用户只要知道下一步链接的文件名, 就可以在地址栏输入该文件名而绕过口令文件直接浏览该文件。 怎样才能达到真
正加密的目的:如果不输入口令、用户名就无法浏览网页?”
上面的问题,是在基于internet/intranet的网络中开发web应用时,经常要涉及的一个方面。对于用asp开发的
应用,根据个人经验,解决上面的问题,一般有2种方法,分别详细介绍如下:
例程说明
为说明方便起见,以下各方法假设针对如下的例子:
服务器ip地址为192.188.188.188;在服务器上开设一个虚拟目录:/mytest,所有测试文件均位于此路径下;
主文件为myindex.asp,用户首要登录文件为mylogin.asp;测试的合法用户名为mytest,口令也为mytest。
解决方法1
- 编写mylogin.asp内容
< %@ language=vbscipt % >
< @response.buffer=true% >
< html >< head >< title >用户登录< /title >< /head >
< body >
< %
if request("username")="mytest" and request("password")="mytest" then
response.redirect "myindex.asp"
end if
% >
< font style="font-size:11pt" >请输入登录用户名称与口令"< /font >< br >
< form action="mylogin.asp" method="post" >
< br >用户名称:< input type=text name="username" >
< br >用户口令:< input type=password name="password" >
< br >< input type=submit value="登录" >
< /form >
< /body >< /html >
- 编写一个asp包含文件,名字为myrefer.asp
< %@ language=vbscipt % >
< @response.buffer=true% >
< %
myvaild=instr(lcase(request("http_referer")),"http://192.188.188.188/mytest")
if myvaild=0 then
response.redirect "mylogin.asp"
end if
% >
- 修改目录下的其他asp文件头
修改目录下的其余asp,在每个asp文件的头部,都添加如下的代码:
< %@ language=vbscipt % >
< !– #include file="myrefer.asp" — >
以下为原文件内容
……
解决方法2
– 编写global.asa文件
编写global.asa文件,放置在虚拟目录http://192.188.188.188/mytest/下,为了达到用户登录检查的目的,
只修改其中session_onstart的部分。
……
< script runat=server language=vbscript >
sub session_onstart
mystartpage="/mytest/mylogin.asp"
mycurrent=lcase(request("script_name"))
if strcomp(mycurrent,mystartpage) then
response.redirect mystartpage
end if
end sub
< /script >
……
总结
从以上2种实现方法可以看出,第2种比较简单,但需要有单独的虚拟目录,这样才能编写global.asa文件使其
生效;第一种方法,虽然代码比较多,但不是所有文件都必须在虚拟目录中,这对于申请个人主页的用户,是比较可行的
一种方法。
