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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    ASP.NET概述

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  RBAC的基本思想

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应不同模块的不同权限,同一个用户可属于不同的角色,对模块的操作权限取用户所属几个角色的最高权限,可以新建一个页面基类,只要让要进行权限判断的页面继承当前基类。在页面基类中加入权限判断,如果当前登陆用户具有在当前模块的所要进行的操作的权限,则继续,否则给出无权限提示,并返回。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、数据库中表的设计

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1) 功能模块表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)模块表:(sysFuncDic

 

           

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FuncID:模块编号,自动增加。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FuncName:模块名称。Description:描述

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) 用户角色表:(sysEmpRoles

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       用户角色表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

            PKID:自编号,主键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

            EmpID:用户编号,外键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

            RoleID:角色编号,外键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     3)角色表(sysRolesDic

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         角色表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RoleID:角色编号,自增字段,主键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RoleName:角色名称

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Description:角色描述

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)角色权限表(sysFuncRights

    角色权限表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PKID: 编号,自增字段

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FuncID:模块号,外键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RoleID:角色号,外键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RightFlag:权限级别

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

权限可分为:浏览(0),查询(1),添加(2),修改(3),删除(4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如图:权限

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   2、角色的添加,如图所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    角色添加

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   再添加角色的对应的模块和权限信息,如图:

    模块权限

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果角色具有后面的权限,则前面的功能权限也自动获的,比如: 如果当前角色拥有了模块管理的删除权限,则浏览,查询,添加,修改权限也同时具有。分别用04的数字表示,4为最高权限。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用户添加到角色中,如图所示:  

 

     用户角色  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.基类的实现  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1)进入时的权限验证:在基类中实现根据模块名称和登陆用户的编号查询权限信息,如果有权限信息,则将权限代码保存在基类变量中,并进入页面,如果当前没有当前模块的浏览权限,则给出无操作权限的信息,并返回。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    (2) 在当前页面进行操作时则根据上一步验证时获取的权限信息,判断用户是否有所要进行操作的权限,有则执行操作,没有给出无权限信息,并返回。   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


posted on 2006-11-22 16:12  老夫狂傲江湖  阅读(331)  评论(0编辑  收藏  举报