`
seawavenews
  • 浏览: 230330 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

ASP.NET系统用户权限设计与实现

阅读更多
 摘 要 本文依据RBAC的基本思想,利用ASP.NET中的用户控件技术,设计了在电子商务系统中用户权限控制的一种具体实现方法。

  关键词 ASP.NET 角色访问控制 用户控件

  引言

  电子商务系统对安全问题有较高的要求,传统的访问控制方法DAC(Discretionary Access Control,自主访问控制模型)、MAC(Mandatory Access Control,强制访问控制模型)难以满足复杂的企业环境需求。因此,NIST(National Institute of Standards and Technology,美国国家标准化和技术委员会)于90年代初提出了基于角色的访问控制方法,实现了用户与访问权限的逻辑分离,更符合企业的用户、组织、数据和应用特征。ASP.NET是微软为了抗衡JSP而推出的新一代ASP(Active Server Pages)脚本语言,它借鉴了JSP的优点,同时它又具有自身的一些新特点。

  本文将首先介绍ASP.NET的基本情况和RBAC(Role Based Access Control)的基本思想,在此基础上,给出电子商务系统中实现用户权限控制的一种具体方法。

  ASP.NET概述

  1、ASP.NET

  ASP.NET是微软流行的动态WEB编程技术活动服务器网页(ASP)的最新版本,但它远不是传统ASP简单升级。ASP.NET和ASP的最大区别在于编程思维的转换,ASP.NET是真正的面向对象(Object-oriented),而不仅仅在于功能的增强。

  在ASP.NET中,Web 窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。其中每一部分都存储在一个单独的文件中。可视元素在一个扩展名为 .aspx 文件中创建,而代码位于一个单独的类文件中,该文件称作代码隐藏类文件扩展名为.aspx.vb 或 .aspx.cs。这样,.aspx文件中存放所有要显示的元素,aspx.vb或.aspx.cs文件中存放逻辑。

  2、用户控件(UserControl)

  为了使用户能够根据需要方便地定义控件,ASP.NET引入了 Web 窗体用户控件的概念。实际上,只要将.aspx稍作修改即可转换为 Web 用户控件,扩展名为 .ascx,.ascx和.aspx文件一样也有一个存放逻辑的代码隐藏类文件,扩展名为.ascx.vb或.ascx.cs,只是它不能作为独立 Web 窗体页来运行,只有当被包含在 .aspx文件中时,用户控件才能工作。

  通过以下两个步骤在WEB窗体页中设置用户控件:

  (1)使用@ Register指令在.aspx文件中注册用户控件。如要注册在放在相对路径“../UserControl/”下的头文件headinner.ascx的方法为:

<%@ Register TagPrefix="Acme" TagName="Head" Src="../UserControl/headinner.ascx" %>

  (2)在服务器控件的开始标记和结束标记之间(<form runat=server> </form>) 声明该用户控件元素。例如要声明上面所导入的控件的语法为:

<Acme: Head runat="server"/>

  这样,该控件就成为页的一部分,并将在处理该页时呈现出来。并且,该控件的公共属性、事件和方法将向 Web 窗体页公开并且可以通过编程来使用。根据这个原理,就可以将每个页面初始化时所要执行的操作(如登录验证,角色验证)封装在用户控件当中。
 RBAC的基本思想

  RBAC(角色访问控制)的基本思想可简单地用图1来表示,即把整个访问控制过程分成两步:访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。

  由于RBAC实现了用户与访问权限的逻辑分离,因此它极大的方便了权限管理。例如,如果一个用户的职位发生变化,只要将用户当前的角色去掉,加入代表新职务或新任务的角色即可,角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,并且委派用户到角色不需要很多技术,可以由行政管理人员来执行,而配置权限到角色的工作比较复杂,需要一定的技术,可以由专门的技术人员来承担,但是不给他们委派用户的权限,这与现实中情况正好一致。

  用户权限在.NET中的设计与实现

  利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应一些权限,然后利用ASP.NET中的用户控件(UserControl)来判断该用户对应的角色是否对访问页面有访问的权力。

  下面将从数据库设计、添加角色和用户控件的使用等三方面来阐述具体实现过程。

  1、数据库中表的设计

  首先,在数据库中设计功能模块表、功能表和角色表等三个表。

  (1) 功能模块表

  为了管理好用户的权限,首先要组织好系统的模块,为此设计了一个功能模块表。见表1。


  (2) 功能表


  每个功能模块所具有的子功能称为功能,如商品管理模块goods(属于功能模块的范畴)包含商品信息查询、商品信息更新、商品信息删除、商品定价信息查询以及商品定价信息更新五种功能,功能表的设计见表2。

  上面提到的例子可以作为这样几条记录分别插入功能模块表和功能表。


insert into TModule values(0,'商品管理模块','goods',5);
insert into Tfunction values(0,'商品信息查询','selectgoods',0);
insert into Tfunction values(1,'商品信息更新','updategoods',0);
insert into Tfunction values(2,'商品信息删除','deletegoods',0);
insert into Tfunction values(3,'商品定价信息查询','selectgoodsprice',0);
insert into Tfunction values(4,'商品定价信息更新','updategoodsprice',0);

  (3) 角色表


  角色表的设计关键在于角色值的定义,它是一个由0和1组成的类似二进制数的字符串。而功能表中的funcNo (功能编号)字段表示该功能在角色表的roleValue (角色值)字段中的位置,如果该位置对应的数值是0,表示该角色无此权限,如果值为1,则表示该角色拥有此权限。如角色普通会员的角色值为100100…00(共100位),如上所示,商品信息查询的功能编号为0,角色值100100…00的第0位为1,所以该普通会员角色拥有商品信息查询的功能;相反,该角色值的第1位为0,而功能编号为1 的功能为商品信息更新,所以该普通会员角色没有商品信息更新的权限。它们的关系可由图2来表示。


2、角色的添加

  有了上面几个表,角色页面的功能模块以及其对应的功能都可以从功能模块表和功能表中读出,如图3所示。


  在将新角色普通会员插入数据库时,先将角色值的所有位都置为0,然后利用.NET Framework 类库中的Replace函数将角色值中的打上勾的功能相应的功能编号位的值改为1。

  例如,新添加一个角色名为普通会员的角色,它拥有的功能为商品信息查询(功能编号0)和商品定价信息查询(功能编号3)两项,则角色值应为1001000……00(100位),即角色值中第0位和第3位的值为1,其余为0。

  3、利用用户控件实现访问权限

  在定义好用户控件.ascx文件(head.ascx)及.ascx.cs(head.ascx,cs)文件时,接下去只要在.aspx文件中注册和声明它就可以了。

  (1) 注册

<%@ Register TagPrefix="Acme" TagName="Head" Src="../UserControl/headinner.ascx" %>

  (2) 声明

  经过实践,在.aspx文件中声明.ascx文件可分为几种情况:

  第一种情况:<Acme:Head runat="server" />

  第二种情况:<Acme:Head runat="server" flag=0 funcname1=selectgoods funcname2=updategoods />

  第三种情况:<Acme: Head runat="server" flag=1 funcname1= selectgoods funcname2=updategoods />

  字段flag是用来控制怎样进行权限检查的标志,funcname指功能表中的功能英文名。如果flag为空,则不执行权限检查(第一种情况);否则如果flag=="0",则表示同时具有selectgoods(商品信息查询)和 updategoods(商品信息更新)这两种权限的角色所对应的用户才有权利查看该页(第二种情况);否则,如果flag=="1",则认为,具有selectgoods(商品信息查询)或 updategoods(商品信息更新)这两种权限中任意一种权限的用户就有权利查看该页(第三种情况)。

  上面进行权限检查的过程全部由用户控件来实现,其全部方法都封装在.ascx.cs文件中,其中最主要的一个方法是检查某一角色是否拥有某一确定权限的checkAuth(string roleId,string funcEName)方法。这个方法的思想如图4所示。


  图4中roleValue(角色值)的第0位(selectgoods的功能编号)值为1,表示该角色拥有selectgoods(商品信息查询)的权限。这样,我们把对权限检查的所有逻辑都封装在了用户控件中,因此,对WEB窗体页.aspx文件而言,只需在导入.ascx文件时确定用户在访问该页面时所应拥有的权限,而不需对aspx.cs进行任何改动。

  由上所述,可以很清楚地看出,只要在用户控件中对用户权限进行控制,再把它包括在.aspx文件中(这件事作者本来就是要做的),那么在编程的时候就不必考虑复杂的权限问题了。

  结束语

  本文在开发一个电子商务系统的实践中发现,公司对系统用户的权限控制非常重视。因此,设计一个简单方便又行之有效的权限控制机制对于电子商务系统是必不可少的。本文所提出的基于ASP.NET的电子商务系统用户权限设计和实现方法已经在实际的工作中得到了验证,修改指定权限组的操作变得非常方便。

  参考文献

  [1] Chris Payne.ASP.NET从入门到精通. 北京:人民邮电出版社,2002.
  [2] 陈传波,夏义兵.基于ASP.NET技术及三层网络架构的权限管理系统模型.计算机工程,2003,第12期:101;
  [3] 曹天杰,张永平.管理信息系统中基于角色的访问控制.计算机应用,2001,第8期:21;
  [4] 江资斌,向南平.MIS用户权限管理技术.电脑与信息技术,2002,第五期:57;.
 
分享到:
评论

相关推荐

    毕业设计ASP_NET系统用户权限设计与实现.rar

    本文将深入探讨“毕业设计ASP.NET系统用户权限设计与实现”这一主题,主要涉及以下几个关键知识点: 1. **身份验证(Authentication)**:ASP.NET提供了多种身份验证机制,如Windows身份验证、Forms身份验证和OAuth...

    asp.net校友录的设计与实现

    总结,"ASP.NET校友录的设计与实现"项目涵盖了Web应用开发的多个重要环节,包括数据库设计、用户认证、数据访问、业务逻辑、界面设计、安全性和性能优化等,为IT学生提供了全面的实践平台,有助于提升他们的专业技能...

    ASP.NET学生点名系统设计与实现(论文范文+毕业设计源代码)

    总之,“ASP.NET学生点名系统设计与实现”项目是一个集成了理论与实践的优秀案例,涵盖了ASP.NET Web开发的基础知识,包括前后端交互、数据库操作、用户界面设计等多个方面,对于学习和掌握ASP.NET技术具有很高的...

    Asp.Net系统实现

    Asp.NET提供了一套完善的Identity系统,可以方便地实现用户注册、登录和权限控制。此外,考虑到系统的可扩展性和性能,可能会采用依赖注入(Dependency Injection)来管理对象的生命周期,以及缓存策略来优化数据...

    基于asp.net的网络硬盘设计与实现(毕业设计)

    《基于ASP.NET的网络硬盘设计与实现》是一个典型的毕业设计项目,主要采用了VS2005集成开发环境和SQL Server 2005数据库系统。该项目旨在构建一个在线存储服务,用户可以通过网络上传、下载、管理自己的文件,类似于...

    ASP.NET网络相册的设计与实现论文

    这篇“ASP.NET网络相册的设计与实现论文”很可能是探讨如何使用ASP.NET技术来开发一个在线相册应用,该应用可能包含用户上传照片、管理相册、查看照片等功能。 在设计网络相册时,首先需要考虑的是用户界面的友好性...

    ASP.NET 网上选课系统的设计与实现(源代码+论文)

    ASP.NET网上选课系统的设计与实现是一个典型的Web应用程序开发项目,它涵盖了多个IT领域的关键知识点。这个系统的主要目的是提供一个方便、高效的平台,让学生能够在线选择课程,同时满足管理员进行课程管理的需求。...

    asp.net物业管理系统的设计与实现

    【ASP.NET物业管理系统的架构与设计】 ...综上所述,"asp.net物业管理系统的设计与实现"涉及了从后端数据库设计到前端用户体验的全过程,涵盖了Web开发的多个关键方面,为物业管理工作提供了高效、安全的信息支持。

    基于ASP.NET的在线考勤系统设计与实现(源代码+项目报告).zip

    《基于ASP.NET的在线考勤系统设计与实现》是一个典型的Web应用程序开发案例,它结合了ASP.NET技术,构建了一个高效、便捷的考勤管理平台。本文将深入探讨该系统的架构设计、主要功能、核心技术以及实现过程。 首先...

    基于ASP.NET学生选课系统的设计与实现开题报告及文献综述

    《基于ASP.NET学生选课系统的设计与实现》的开题报告和文献综述是软件工程领域的一个重要课题,它涉及到互联网技术、数据库管理以及用户体验等多个关键知识点。在本项目中,我们将深入探讨ASP.NET框架如何被用来构建...

    Asp.net团购网的设计与实现 源码

    Asp.NET团购网的设计与实现是一项综合性的项目,它涵盖了Web开发中的许多核心技术和概念。在本项目中,Asp.NET被用作主要的开发框架,用于构建一个功能齐全、用户体验良好的在线团购平台。以下是对这个项目的详细...

    ASP.NET实现的论坛BBS系统

    ASP.NET实现的论坛BBS系统是一个基于微软的ASP.NET技术构建的在线讨论平台,它提供了丰富的功能,使得用户能够方便地发表、回复和管理帖子。ASP.NET是.NET框架的一部分,专为构建动态Web应用程序而设计,它具有高效...

    Asp.net中的用户角色权限设计

    下面将详细探讨Asp.net中实现用户角色权限设计的核心概念、技术和最佳实践。 首先,Asp.net提供了一个内置的安全框架,包括身份验证(Authentication)和授权(Authorization)两部分。身份验证用于确认用户身份,...

    ASP.NET通用权限管理系统

    总结来说,ASP.NET通用权限管理系统利用ASP.NET 2.0框架的特性,实现了用户认证、角色管理和资源访问控制等功能,为企业级Web应用提供了安全的访问控制环境。通过角色分配和权限设定,确保了数据和操作的安全性,...

    基于ASP.NET的通讯录系统设计与实现

    综上所述,基于ASP.NET的通讯录系统设计与实现是一个涉及用户认证、数据库交互、页面设计、数据验证、权限控制等多个层面的综合项目。通过合理运用ASP.NET提供的工具和技术,可以构建出高效、安全且易于维护的通讯录...

    ASP.NET+MVC+创建用户权限管理范例程序源码

    【ASP.NET + MVC 创建用户权限管理范例程序源码】是一个基于Microsoft的ASP.NET框架和MVC(Model-View-Controller)设计模式的项目,旨在提供一个完整的用户权限管理系统。这个系统可以帮助开发者实现对用户角色的...

Global site tag (gtag.js) - Google Analytics