用户权限管理系统文档格式.docx

上传人:b****2 文档编号:15248837 上传时间:2022-10-28 格式:DOCX 页数:8 大小:20.20KB
下载 相关 举报
用户权限管理系统文档格式.docx_第1页
第1页 / 共8页
用户权限管理系统文档格式.docx_第2页
第2页 / 共8页
用户权限管理系统文档格式.docx_第3页
第3页 / 共8页
用户权限管理系统文档格式.docx_第4页
第4页 / 共8页
用户权限管理系统文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

用户权限管理系统文档格式.docx

《用户权限管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《用户权限管理系统文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

用户权限管理系统文档格式.docx

(5)用户管理支持IP地址的通配符和连接符。

2.2数据库的设计

首先,根据该企业的要求将用户按照访问的对象划分成不同的权限级别;

自动登录用户的IP要单独存放,便于查询。

因此,在Userid.mdb中建立了两张表(见表1和表2)分别存放用户主要信息和自动登录用户的IP地址。

表1用户信息表(user)

字段名称数据类型字段说明

Id文本用户名

Password文本密码

Access_level文本用户类型(用0,1字符串表示)Count文本访问次数Ip_address文本IP地址

Menu_name文本菜单文件的路径和名称Op_check文本用户附加选项(自动登录、用户修改密码)Del_flag文本删除标记(1表示删除)

No文本用户编号

表2自动登录IP地址表(Autologin)

Ip_address文本自动登录的IP地址

在User表中,Access_level字段用以0或1组成的5b字符串表示不同的用户级别(管理员、高级用户、中级用户、普通用户和自定义用户),每一位表示一种级别,“0”无效,“1”有效;

如,“10000”表示该用户具有管理员权限;

各级别能够访问的对象显示在网页左边的树型菜单控件中,不同的用户显示不同的菜单,菜单的内容存放在相应的文件中,通过Menu_name字段来调用;

Ip_address字段支持在IP地址第三、四段使用通配符“*”和连接符“-”,如,“792.168.2.*”,“192.168.151-153.10-100”;

Op_check字段用2位0,1字符串表示用户附加选项,如“01”表示允许用户修改密码,“10”表示该用户为自动登录用户。

在Autologin表中,Ip_address字段用来存发User中Op_check字段第一位是“1”的用户的IP地址。

2.3系统流程

系统流程图如图一所示。

用户登录首先由check.asp获取用户的IP信息,到数据库Userid.mdb的Autologin表中查找该IP信息,到数据库Userid.mdb的Autologin表中查找该IP是否为自动登录的用户。

如果是,从User表中获取对应的权限,直接进入系统的主页;

如果不是,就进入Login.asp,要求用户输入用户名、密码,通过验证后,获取相应的权限,进入系统主页。

check.asp-login.asp

用户访问判断是否为自动登录系统L

及获取用户权限信息主页

用户权限信息

用户数据库

Userid.mdb

图1用户登录流程

2.4用ASP.net实现系统

ASP.net提供了内置的Session对象,以用来访问存储于用户的局部会话空间中的变量和对象,可以实现多个网页本地数据的共享和相互间的数据传递;

本系统的许多全局信息就是采用这种方式来传递的,如,菜单文件的路径等。

当用户通过浏览器访问时,首先使用ASP.net内置的服务器端变量获取用户的IP地址,判断该用户是否为自动登录,实现的代码如下:

Ip-ad=reqeest.ServerVariables(“REMOTE_ADDR”)

//获得用户ip地址

IfCheckIP(ip_ad)Then?

Check(ip_ad)?

//检验是否为自动登录用户

Session(“passed“)=True

//Passed为True表示通过验证

Logon=True//写入日志文件

SetMyFileObject=Server.createobject(“scripting.filesyatemobject”)

Physicalpath=Server.MapPath(“global/win.ins”)

SetMyTextFile=MyFileObject.OpenTextFile

(PhysicalPath,8,true)MyTextFile.WriteLine(now()&

”用户名”

&

ID&

“IP地址为“&

ip_ad&

”自动登录网络”)

MyTextFile.Close

Endif

函数Check(ip_ad)作用是检查IP地址为ip_ad的用户是否为自动登录用户,如果是,就返回true;

同时获取该用户对应的权限和级别;

如果不是,就返回False。

具体代码如下:

//实现自动登录用户判断的函数

FunctionCheckIP(ip_ad)

//连接Userid.mdb数据库

Setconn=Server.CreateObject(“ADODB.connection”)Param=“driver={MicrosoftAccessDriver(*.mdb)}”Conn.Openparam&

”;

dbq=”&

Server.MapPath(“”userid.mdb”)&

;

Pwd=access_level”

Sql=“Selectip_adressFormautologin”

//打开自动登录Autologin表Setrs=server.CreateObject(“ADODB.Recordset”)

Rs.Opensql,conn

Rs.CacheSize=5

Ifrs.EOFthen//如果有自动登录用户,则返回False

CheckIP=False

Rs.close

Else

Rs.movefirst

Dowhile(notrs.cof)and(flag-false)

Flag=Ture

Ip_auto=rs(0)

//从Autologin表中获得IP地址进行比较

Fori=1to4

//如果为“*”,则不用比较,实现通配符操作

IfGetip(rs(0),i)<

>

”*”then

//Getip(ip_ad,n)函数,实现了IP地址连接符的使用

IfGetip(ip_ad,i)<

Getip(rs(0),i)then

Flag=false

Ip_auto=””

Next

Rs.movenext

Loop

CheckIP=false

Ifflag=truethen

//如果在Autologin表中查找到符合太监的记录

Ifrs.RecordCount<

=1then

//如果Autologin表中只有一条记录

Rs.MoveFirst

Ifrs.EOFthen//如果符合条件的是最后一条记录

Rs.Movel,ast

Rs.Move-1

CheckIP=true//设定返回值为True

//按查找的IP地址到User表中查找相应的权限Sql1=“select*fromuserWhereip_address=„”&

ip_auto&

”?

”Setrsl=con.execute(sql1)

Ifnotrsl.EOFthen

Counter=cint(rsl(3))+1//访问计数加1

Session(“ID”)=rsl(“id”)

//获取用户名,存入Session变量中共享

//查找用户对应的菜单文件和IP地址以及类型

Setrsl=conn.execute(“updateusersetcount=”&

counter&

Whereip_adress=„”&

”)

//更新访问次数

Sql2=“select*fromuser

whereip_adress=„”&

setrs2=conn.execute(sql2)

session(“access”)=rs2(“Access_level”)

//获取权限

Session(“user_menu”)=rs2(5)

//获取用户的菜单文件路径

Session(“user_op”)=rs2(6)

//获取用户的附加选项

Conn.close

EndFunction

函数Getid(ip_ad,n)的作用是实现IP地址第三段和第四段中的连接符使用,ip_ad为要检查的ip地址变量,n表示要检查的是IP地址的第n段内容,如果找到则返回对应的值,否则返回999.主要代码如下:

//实现网段连接符-,要把userid和ip_address字段长度改为24FunctionGetid(ip_ad,n)

Ifn=1then

I=instr(1,ip_ad,“.”)

Getid=mid(ip_ad,l,i-1)

Ifn=3then

I=instr(l,ip_ad,”.”)

i=instr(i+1,ip_ad,”.”)

j=instr(i+1,ip_ad,”.”)

//实现IP地址第三部分网段划分

Ip_3=mid(ip_ad,i+1,j-i-1)

Ifinstr(1,ip_3,”-”)=0then

//如果第三部分没有使用连接符,就直接赋值

Getip=ip_3

Elsei=instr(l,ip_3,”-”)

//如果第三部分使用了连接符,则进行分解J=len(ip_3)

Ip_f=mid(ip_3,l,i-1)//获取开始的位置Ip_b=right(ip_3,j-i)//获取结束的位置Ip.test=Request.ServerVariables(“REMOTE_ADDR”)

//获得用户IP地址I=instr(l,ip_test,”.”)

I=instr(i+1,ip_test,”.”)

J=instr(i+1,ip_test,”.”)

Ipu=mid(ip_test,i+1,j-i-1)

//比较用户的IP地址的第三部分是否符

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1