基于.NET科研管理系统权限管理设计与实现
2013-05-08敖谦,刘华
敖 谦,刘 华
(上饶师范学院,江西 上饶 334001)
引言
在科研管理系统中,涉及多种角色,例如:管理员、教师和科研处管理人员等。系统根据不同的角色自动生成各自的菜单,在每个页面中添加角色访问权限的代码,判断访问的用户是否能访问该页面。随着系统的应用不断深入,应用模块不断增加,角色也更加复杂,如果沿用之前在每个页面添加页面访问的代码,造成很多重复工作。因此需要找到一种灵活的权限控制方法,本文提出的用户菜单结合页面访问控制方法能很好的解决这个问题。
1 相关技术
1.1 站点地图
站点地图在ASP.NET中是一个Web.SiteMap的XML文件,位于Web站点的根目录下,对应系统中的所有导航菜单。导航菜单的每个菜单信息保存在一个节点中,节点信息包含有菜单对应页面的URL、菜单标题和菜单描述。
站点地图文件中,根节点名称SiteMap,包含有很多SiteMapNode标记的子节点,子节点允许嵌套,子节点的格式为:
<SiteMapNode(URL)(Title)(Description)></SiteMapNode>
1.2 HttpModule模块
ASP.Net处理Http Request时,使用 Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达HttpHandler,HttpHandler处理完之后,仍经过Pipeline中各个HttpModule的处理,最后将HTML发送到客户端浏览器中,如图1所示。
从图1中可以发现,所有的HTTP请求都必须经过HttpModule模块,所以可以利用HttpModule模块对HTTP请求进行权限控制,放行有权限的用户请求,终止没有权限的用户请求,从而实现过滤器的作用。
图1 ASP.NET处理HTTP请求内部流程
2 系统权限管理设计
科研管理系统的权限管理分为:生成用户菜单、页面访问控制。
2.1 生成用户菜单
用户登录系统后,系统根据站点地图Web.sitemap文件,读取用户所属角色与菜单项对应表,最终生成用户的菜单,如图2所示。
图2 用户菜单生成处理
2.2 页面访问控制
当用户访问系统的某个页面时,根据系统自定义的HttpModule模块,对用户的HTTP请求进行权限的验证。用户有权限正常访问页面,否则重定向错误页面,如图3所示。
图3 页面访问控制处理
2.3 系统权限管理数据库设计
用户信息表
Yhid int用户账号 nvarchar(20)用户密码nvarchar(20)用户类型 nvarchar(50)…………
角色与菜单项对应表
类型编号 nvarchar(50)用户类型 nvarchar(50)管理类型 nvarchar(50)教师身份模块 int课题信息登记 int课题信息修改 int…………
角色与页面对应表
用户类型 nchar(10)页面nvarchar(50)
3 系统权限管理实现
3.1 用户菜单生成模块
用户登录成功后,读取角色与菜单项对应表,结合Web.sitemap站点地图文件,利用树型控件加载Create-Node函数生成的treenode结构数据。Web.sitemap文件内容:
CreateNode函数代码:
3.2 页面访问控制模块
自定义HttpModule模块代码:
系统会将所获取的HTTP请求提交自定义HttpModule模块,HttpModule模块根据Session[“usertype”]得到提交请求的用户角色类型,并通过委托事件application AcquireRequestState ,将用户角色类型与从数据库中得到的角色可访问的资源比较。若hasright函数返回False,则角色没有访问访问权限;反之,有访问权限。
4 结束语
通过生成用户菜单结合页面访问控制的方法,实现系统权限管理与页面功能模块松耦合,在实际的运行过程中得到很好的体现。
[1]王明,陆正球.基于MVC科研管理系统的研究与实现[J].微计算机应用,2009,(1):77-80.
[2]范明虎,樊红,伍孝金.ASP.net中基于RBAC的通用权限管理系统[J].计算机工程,2010,36(1):143-145.
[3]陈伟.ASP.NET 3.5网站开发实例教程[M].北京:清华大学出版社,2009.
[4]张文涛,常红星.基于ASP.NET的B/S架构下的项目管理系统的网络安全模式设计[J].计算机科学,2008,35(2):101-103.