基于ASP.NET的两种权限管理方法的比较

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:zhanghu216
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:以H-H销售系统的研究和开发为背景,针对用户权限的安全问题,对B/S模式下系统用户权限管理的需求进行了分析,采用基于角色的安全管理策略进行了系统功能和业务流程的设计,并采用ASP.NET等技术实现了系统用户权限的静态和动态两种不同的管理模式,并在应用和性能上进行了比较。
  关键词:ASP.NET;角色;权限管理
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)31-0896-02
  The Comparison of Two Different Authority Management Methods on the Base of ASP.NET
  ZHU Yao-qin
  (Qindao Huanghai Vocational College, Qingdao 266427, China)
  Abstract: Taking the research and development of H-H Distribution System as background, aiming at the safety problem of user's authority, this essay analyses the requirement of system user's authority management under the B/S mode. The author designed the system function and operation procedure with adopting the safety management strategy on the base of role, and realized the two different management modes of system user's authority including static state and dynamic with adopting the ASP.NET tech., and made comparison on the application and capability.
  Key words: ASP.NET; role; authority management
  1 基本原理
  在系统中,一般而言,一个权限就是一个对单个或多个目标特定模式的访问的正式批准。权限通常是肯定的,在系统中表示拥有权限去实行某些行动。权限的本质取决于一个系统实现的细节和具体系统的情况。在一般的访问控制模型中,往往将权限作为一个不加以解释的符号。权限管理需要将权限进行划分以对应它自己的资源,将权限进一步的分割以方便系统保护它里面每一个抽象的目标,并且方便将权限赋予角色。角色可以认为是单个或者一组用户在一个组织中用来实行的一组操作。可以将角色看作一组用户的集合加上一组操作权限的集合。角色管理的任务就是要定义这样的集合,然后将这些集合分配给合适的用户。在许多访问控制系统中,用户组通常作为访问控制的一种单位。管理信息系统必然要描述使用这个系统的单位的组织形态,因为它一定是被应用到一定规模的组织中的。而用户的工作划分一般按照该用户所在部门的岗位或者所在工作组的角色来确定的,因此,抽象出用户的客观组织对象,并融入访问控制模型中,能够极大的丰富模型的表现能力,并使得系统与客观情况相吻合,符合用户的使用习惯。
  一般的组织形态结构中,往往存在三种组织形态:按照职能划分的横向组织形态、按照任务(或者项目,产品等)划分的纵向组织形态和将两者结合起来的矩阵式组织形态,其中矩阵式组织形态又分为弱矩阵,平衡矩阵和强矩阵三种形态。矩阵的行和列分别表示系统的角色和系统的功能点,矩阵行列的交汇点表示当前的角色对于当前的功能是否有使用的权限。
  2 需求分析
  H-H销售系统是一个复杂的企业级应用,区域的划分和岗位职能的划分都非常的细致复杂。一方面是区域的划分。从总部的管理向下分大区,办事处,经销商。属于不同区的用户只能看到本地区的资料和数据。比如属于东北区的办事处就不可能看到华东区所属办事处的设置情况,更看不到其他办事处的经营情况。而北区的不同的两个办事处工作人员也不可能看到彼此的部门的经营情况。另一方面用户属于不同的岗位级别的划分。不同岗位工作人员需要查看和操作不同的资料和数据。比如办事处的员工只能输入合同基本数据,但是不能查看和修改合同的价格、扣点等重要数据。总部的管理人员也划分岗位,各个岗位的人员只能管理本岗位的数据。为了实现用户的权限管理用户权限的控制具体到每一个页面,有的甚至是页面上一个按钮。
  3 总体设计
  ASP.NET 所具有的表现层,业务逻辑层和数据访问层的三层架构,使页面代码与逻辑处理代码与访问数据库的代码相互分开并且相互透明。
  此系统的所有访问控制和权限控制基本上是通过软件界面来实现的,通过对界面的控制来控制主体对客体的访问。在系统中对界面的表现要求主要有两种:软件界面元素的可见性和可访问性;软件界面数据集合的可见性和可操作性。即将用户按总部和办事处分角色,总部可以看到全体办事处的信息,而办事处只能看到自己办事处的相关信息。这就要求在绑定DataGrid和DropdownList时按用户的角色绑定不同的数据。并且有些管理和维护的页面是总部的管理维护人员才能访问的。由于办事处区分经理和工作人员,总部还区分各个岗位工作人员和管理人员。各种岗位对页面控件以及数据的可见性要求不一,对按钮的操作也不近相同。
  图1是用户登录系统和进入页面的处理流程。其中用户登录判断用户表中用户名和密码的匹配,成功就将用户名和用户所属部门存入Session保存。页面申请的是否登录判断是获取Session用户名的值判断是否为空,验证权限是判断用户表中权限字符串是否符合进入页面的规则。若允许进入页面则按照角色确定页面加载什么样的控件和数据。
  在用户登录的同时在数据库的表中记录用户名,登录时间和登录机器的IP等基本信息以增加系统的安全性。用户每进入一个页面也相应的把页面名称记录下来,和用户登录信息一起作为系统维护的基本日志信息。
  4 静态分配角色权限方式的实现
  4.1 权限管理数据库设计
  静态分配角色就是系统中的角色和各个角色的权限已经设定,一旦设计完成就不能更改。此种设计思想实现较简单。首先设计用户表和角色权限表。在用户表中设置权限编号和部门编号的外键。在权限表中事先定义好各个角色的名称和编号,编号按奇数递增排列以便于扩展。具体设计如表1、表2所示。
  4.2 代码实现
  在访问每个页面之前先从Session中取出在用户登录时就存储在Session中的用户的权限编号和用户编号。在专门判断权限的类中定义好了每个模块的页面可以访问的权限编号。程序只要调用权限判断类,并将模块编号和权限编号作参数传递,就可以判断此用户是否可以进入此页面。由于有些权限细化到一个页面还是不够具体,因此,在有些按钮(例如删除功能按钮,审核功能按钮)的操作前也要进行权限的判断。
  由于权限是固定的,权限判断的函数很简单易写,并且代码量不大。只需要按模块分类再按照功能分类,目的是为了便于调用函数找到匹配的权限编号。找到编号后将传来的参数和权限类函数中的编号进行比较一致的就返回真,意味着可以操作,反之就返回假,弹出相应的提示框警告用户。但是这样作的坏处在于权限编号写入了权限判断函数,如果要更改是非常麻烦的。
  5 动态权限管理方式的实现
  毕竟在一个复杂的体统中运用不变的权限分配管理方式是非常危险的,因为在实际应用中,尤其是庞大的管理系统中,企业管理的调整和岗位权限的变动是频繁的并且复杂的。将权限矩阵固定的写在代码中的方法是不易于维护和扩展的。所以为了适应企业的业务复杂性和变动灵活性的要求我们不得不设计了可以灵活调整的动态权限管理方法。
  5.1 数据库设计的改进
  将权限设定成可以灵活修改的,就需要添加一个专门编辑权限的表叫做页面权限信息表,见表3。将所有页面和页面上需要设定的控件的信息都存在这个表中,每个用户的权限设置就以此表为基础。
  表3中的页面名称保存每个在体统中出现的页面,分类字段为了便于分模块管理。有时一个页面对于权限来说还不够具体,有的涉及到功能按钮的隐藏,有的涉及到数据的隐藏。这种类型的页面就要用到更详细的字段来描述,详细信息分别存在按钮名称字段和表格名称、表格属性字段。
  5.2 代码实现
  将页面权限信息表即表3的信息绑定到权限信息管理页面中的DataGrid控件中,如图2。每个页面的权限复选框的选择情况组合,按位与的方法计算出的一位的字符即为此页面的权限信息。以每个页面的记录的自动编号作为位数,连接成权限字符串,存入用户描述表的权限编号字段中。
  6 结论
  经过在本系统中的比较,可以看出第二种动态分配权限的方法比静态的灵活自由的多,也非常易于扩展和维护,但是复杂程度更高了,用户设置错误或者页面权限信息表的数据有细微错误都能导致系统权限的错误。在上百个页面的权限管理系统中,这两种方法的运行速度几乎没有差别。但是在静态权限管理的基础上再修改权限是非常复杂而浩大的工程了。因此这种简单易用的方法可以用在小型的局部的权限管理简单明确的管理系统中。动态的权限管理方法适用于复杂的多变的,要求灵活调整的中型的管理系统中。
  参考文献:
  [1] Meier J D,Mackman A,Dunner M,et a1.Building Secure ASP.NET Applications:Authentication,Authorization,and Secure Communication[M].Microsoft patterns&practices,2002.
  [2] (美)Marshall D.NET安全编程[M].余波,张立浩,译.北京:清华大学出版社,2003.
  [3] (美)Platt DS.Microsoft.NET精髓[M].黄慧萍,芦阳,等译.北京:机械工业出版社,2003.
  [4] (美) Damien Foggon,Daniel Maharry. ASP.NET 1.1数据库入门经典.杨浩,译.北京:清华大学出版社.
其他文献
摘要:针对STATCOM的控制系统,引入了一种在全论域范围内带用变参数自调整因子的模糊PI控制策略。仿真结果表明:采用该方法所设计的控制系统可以有效地控制节点电压,改善接入点系统的稳定性,并且响应快,精度高,鲁棒性强。  关键词:静止同步补偿器;变参数;自调整;模糊PI控制  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)36-2728-03  Study on ST
期刊
摘要:通过阐述了基于CTI(计算机电话集成)技术呼叫中心的经典ACD(自动呼叫分配)排队Erlang-C模型,并分析了其实际应用中的缺陷,在此基础上提出了两种改进ACD算法:线性加权优先级排队算法、预测等待时间算法,这两种算法具有很大的灵活性,实用性及智能性!  关键词:CTI;ACD;Erlang-C模型;自动呼叫分配  中图分类号:TP911文献标识码:A文章编号:1009-3044(2008
期刊
摘要:Boosting 算法是近年来在机器学习领域中一种流行的用来提高学习精度的算法。文中以AdaBoost算法为例来介绍Boosting的基本原理。  关键词:机器学习;Boosting;泛化误差;分类  中图分类号:TP181文献标识码:A文章编号:1009-3044(2008)36-2698-02  A Study of Boosting Algorithm  LU Gang1, CHEN
期刊
摘要:结合计算机网络和嵌入式系统软件的发展现状,总结了嵌入式TCP/IP协议栈的一般特点和处理过程,进一步详细地讨论了协议栈中的拥塞控制机制,特别是TCP拥塞控制机制和IP拥塞控制机制的分类,以及它们的实现算法,做出了详细的分析和比较。明确地给出了当前嵌入式TCP/IP协议栈中的拥塞控制解决方法。  关键词:互联网;嵌入式系统;协议栈;数据;报文;拥塞  中图分类号:TP311 文献标志码:A 文
期刊
摘要:文章分析JMS和XML两种技术在实现异构数据库之间数据通信方面的优势;然后提出异构数据库集成的目标和主要问题,通过对数据库集成方案、数据的传输方式和传输格式、异构数据库访问等问题的分析,提出一种基于JMS和XML的异构数据库集成模型。  关键词:异构数据库集成;JMS;XML;OpenJMS  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)31-0789-03 
期刊
摘要:对等网络(P2P)有3种主要的组织结构:分布式哈希表(DHT)结构、树形结构、网状结构。P2P技术已经延伸到几乎所有的网络应用领域。该文以远程数据分发技术为例,从减少数据存储与传输成本、节约社会资源的角度出发,结合目前P2P技术的发展趋势,探讨并展望基于P2P技术的远程数据分发模式。  关键词:P2P技术;数据分发;数据传输;点对点  中图分类号:TP311文献标识码:A文章编号:1009-
期刊
摘要:面对目前互联网上动态多样的Web服务,如何发现最大符合用户请求的服务成为一个具有挑战性的课题。Web服务发现主要包括服务的匹配和服务的选择,虽然目前基于OWL-S和语义相似度的服务发现方法在一定程度上改进了传统的基于关键字和简单分类的服务发现机制,但也存在着在综合评价服务相似度时缺乏合理的权值分配的问题。因此,构建Web服务本体,利用神经网络合理分配各个相似度向量的权值,能够更好地发现与请求
期刊
摘要:本文主要介绍了一种Modbus/TCP工业以太网协议的规范和主要功能分类,在处理Modbus/TCP转换的时候可以参考。  关键词:工业以太网;Modbus/TCP协议  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)31-0855-02  The Achievement of the Modbus/TCP of Industrial Ethernet  HUO
期刊
摘要:以当前流行的开源软件和操作系统为基础,介绍了两种服务器端电子邮件服务的实现方式。涉及到服务器配置以及软件模块的编写。并分析了不同方式实现电子邮件服务的优劣。  关键词:电子邮件服务;Sun Solaris10;Perl;Sendmail   中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)31-0815-02  Implement Email Service on
期刊
摘要:C语言的运算符具有使用灵活的特点,可以用于解决许多其它编程语言难以处理的复杂问题。但在实际应用中,因对其理解不深,可能出现各种难以意料的结果。该文对运算符教学过程中使用容易出现问题的地方进行了分析,并给出提出了相应的解决方法。  关键词:C 语言;运算符;程序设计;逻辑表达式  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)31-0900-02  Analysi
期刊