用户权限管理系统 下载本文

内容发布更新时间 : 2024/5/19 11:44:54星期一 下面是文章的全部内容请认真阅读。

用户权限管理系统

用户权限管理系统 1 引 言

当前,企业的信息化和管理的网络化成为趋势,越来越多的企业构建自己的信息管理平台,实现管理手段的信息化,优化企业组织结构,提高企业对市场的灵敏度和竞争力。但将管理信息放到网络上,如何管理分配和控制用户的权限成为影响管理信息安全性的重要问题。

ASP(Active Server Pages,动态服务网页)是Microsoft公司于1996年年底推出的服务器端Web应用程序开发技术。ASP的脚本都在服务器端执行,提供了许多服务器端的对象和组件,返回给客户端的制式标准的Html页面,这样既降低了对客户端浏览器的要求,又是程序的安全性得到了保证,同时也使得我们可以对不同的用户提供不同的页面。另外,ASP还可以利用ADO(ActiveX Database Objecct)组件提供给更加简单有效的访问数据库,并且支持几乎所有的脚本语言。

综合ASP以上特点可以看出,使用ASP技术可以方便的开发出功能强大的服务器端用户权限管理系统,下面用一个实例来说明开发过程。

2 实例剖析 2.1 系统描述

该系统是用ASP为某公司企业的MIS系统开发用户权限管理系统,要求实现以下功能:

(1) 用户要分级别,不同级别具有不同权限(访问不同资源)。 (2) 一台计算机上可以有多个不同权限的用户。

(3) 一个用户在不同的计算机上具有相同的权限。

(4) 某些用户在自己计算机上无需输入用户名和密码,可自动登录。 (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地址

If CheckIP(ip_ad)Then?Check(ip_ad)?