《基于角色的用户权限管理》由会员分享,可在线阅读,更多相关《基于角色的用户权限管理(10页珍藏版)》请在金锄头文库上搜索。
1、基 于 角 色 的 用 户 权 限 管 理 系 统摘要:本文提出并实现了基于角色的用户权限管理系统。系统用于向用户和应用程序提供授权管理服务与实际应用处理模式相应的、与具体应用系统开发管理无关的授权和访问控制机制,有效地简化具体应用系统的开发与维护,提高系统整体安全级别。关键字:信息系统;权限管理;角色;ASP.NETRole-Based User Permissions Management SystemAbstract: This paper introduces and realizes role-based user permissions management system. The
2、 system used to provide user and application with authorized management services and authorization and access control mechanism which is corresponding with practical application processing pattern, and have no relevant with specific application system development management.Effectively simplify the
3、development and maintenance of specific application system, and improve the system overall level of security.Keys: Information System; Permission Management; Role; ASP.NET基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。本论文
4、中实现了分配角色并授予相应的权限管理,从而提高了系统整体安全级别。1、知识背景与技术支持简要介绍了开发本系统所需的知识背景与技术,涉及到.NET 三层架构与访问数据库的ADO.NET 技术。1.1 .NET 三层架构体系三层架构体系分为:表示层(UI) 、逻辑层(BLL) 、数据层(DAL) 。表示层:位于最外层(最上层) ,离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面业务逻辑层:业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件
5、、文本文档或是 XML 文档。简单的说法就是实现对数据表的Select,Insert, Update,Delete 的操作。1.2 数据库访问(ADO.NET)技术ADO.NET 的名称起源于 ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的 Microsoft 技术中访问数据.它提供了平台互用性和可伸缩的数据访问。ADO.NET 增强了对非连接编程模式是支持,并支持 RICH XML 由于传送的数据都是 XML 格式的,因此任何能够读取XML 格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是 ADO .NET 组件,它可以是基于一个 Mi
6、crosoft Visual Studio 的解决方案,如图 2.1 所示,也可以是任何运行在其它平台上的任何应用程序。 ADO.NET 是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel 表格或者 XML 文件。图 2.1. ADO .NET 体系结构2、系统功能需求分析采用 ASP.NET 技术实现基于角色的用户权限管理系统,应具有以下功能: 管理员登陆模块。需求描述:提供创建用户、管理员密码的修改功能; 用户信息管理。需求描述:提供管理员对用户信息的管理功能如删除,禁止登陆等功能; 系统配置管理。需求描述:提供管理员对系统初始化状态
7、的设置功能。 角色授权管理。需求描述:供管理员对用户分配角色功能。 分组管理。需求描述:提供管理员对用户指定组功能 模块管理。需求描述:提供管理员对模块的增删改查功能 用户登陆模块。需求描述:提供用户修改密码、查看用户拥有的权限功能。3、系统总体设计一个好系统的好坏关键在于设计者的思想严密与否。涉及到数据存储,数据库表的设计是否可以压缩,用较少的表来实现数据存储,不单可以节省磁盘存储空间,而且还便于数据的查询。3.1 系统功能特性与构架思想本 系 统 基 于 B/S( Browser/Server, 浏 览 器 /服 务 器 ) 模 式 又 称 之 为 B/S 结 构 。 它 是随 着 Int
8、ernet 技 术 的 兴 起 , 对 c/s 应 用 的 一 种 扩 展 。 在 这 种 结 构 下 , 用 户 工 作 界 面 是 通过 IE 浏 览 器 来 实 现 的 。 因 而 , 客 户 端 只 需 安 装 和 运 行 浏 览 器 软 件 , 而 在 服 务 器 端 安 装 服务 器 软 件 和 数 据 库 管 理 系 统 , 这 样 就 构 筑 了 一 个 简 单 适 用 的 应 用 平 台 。 此 外 , 本 系 统 采用 三 层 构 架 的 开 发 模 式 , 加 速 了 系 统 的 开 发 过 程 。 3.2 系统功能结构图与系统流程图图 3.1 系统功能结构图否 否是 是
9、授权系统 应用系统普通用户登录模块用户信息管理管理员登录模块权限管理验证权限功能系统配置模块管理角色授权管理基于角色的用户权限管理系统用户信息管理授权系统与应用系统超级管理员登 录允许登录授权用户允许登录登 录用户信息管理权限管理模块管理验证权限模块图 3.2 系统流程图4、系统实现设计4.1 数据库需求分析经过对系统功能分析和需求总结,设计并列举主要的数据项和数据结构。 超级管理员,包括数据项:账号、密码、登录时间、角色、组别等。 普通用户,包括数据项:账号、密码 ,登录时间、登录状态、角色、组别等。 角色,包括数据项:角色号、角色名称、角色描述、角色所在组、角色权限等。 组,包括数据项:组
10、号、组名称、组描述、角色标识等。 模块,包括数据项:模块标识、模块名称、模块描述、模块分类、模块权限等。 权限,包括数据项:权限标识、权限名称、权限描述等。 系统配置,包括数据项:配置号,配置名称、配置值、配置描述等4.2 数据库 E-R 图通过上面列举出数据项和数据结构,等同于数据库中实体与属性,通过 E-R 关系图,如图4.1 所示,可以较为方便的找到实体之间的关系。图 4.1 数据库 E-R 图4.3 数据库逻辑结构设计根据上面提到的实体、属性以及 E-R 图,转化为数据表的设计。接下来简要介绍一些数据库表的结构。 t_Users 表 用于记录用户的账号信息。表 4.1 t_Users
11、表列名 数据类型 为空 说明UserID int 主键 管理员编号UserName nvarchar(128) 否 管理员名称Password nvarchar(128) 否 密码Email nvarchar(100) 否 常用邮箱Question nvarchar(100) 否 提示问题Answer nvarchar(100) 否 信息答案RoleID int 外键 所属角色UserGroup int 外键 所属组CreateTime datetime 否 创建日期LastLoginTime datetime 否 最后登录日期Status int 否 登录状态IsOnline bit 否 是
12、否在线IsLimit bit 否 是否受限登录 RGP_Roles 表 用于记录系统角色的相关信息。表 4.2 RGP_Roles 表列名 数据类型 为空 说明RoleID int 主键 角色标识RoleGroupID int 外键 角色所属组名称RoleName nvarchar(30) 否 角色名称RoleOrder int 否 角色排序RoleDescription nvarchar(30) 是 角色描述 RGP_Modules 表 用于记录系统模块的相关信息。表 4.3 RGP_Modules 表列名 数据类型 为空 说明ModuleID int 主键 模块编号ModuleTypeID
13、 int 外键 模块类型编号ModuleName nvarchar(30) 否 模块名称ModuleTag nvarchar(50) 否 模块标识ModuleURL nvarchar(100) 否 访问模块 URLModuleDisabled bit 否 模块是否可用ModuleOrder int 否 模块访问级别ModuleDescription nvarchar(50) 是 模块描述信息IsMenu datetime 否 是否显示在菜单上RGP_RoleAuthorityList 表 用来保存不同的用户所具有的权限信息。表 4.4 RGP_RoleAuthorityList 表列名 数据类
14、型 为空 说明ID int 主键 角色权限编号UserID int 否 用户编号RoleID int 否 角色编号GroupID int 否 组编号ModuleID int 否 模块编号AuthorityTag nvarchar(50) 否 权限标识4.4 业务逻辑类设计业务逻辑层是三层架构模式的核心,是具体操作的实现部分。既为表示层提交的信息作处理,又要对数据层的相关内容操作,比如数据更新,数据删除等一些数据库的操作。接下来简要介绍一些具体类的功能与实现这些功能的方法名称。 用户类(Users 类 )提供对管理员、用户业务实体的逻辑操作,通过引用数据访问层相关方法以实现用户登录检查、创建用户
15、、更新用户、删除用户等,同时对操作结果再进行逻辑处理以供用户界面层显示。方法名:public bool CheckLogin()public bool CreateUser() public bool UpdateUser()public bool DeleteUser() 用户分组类 (UserGroup 类)提供用户分组的一些逻辑操作,通过引用数据访问层相关方法以实现创建用户分组、更新用户分组、检索用户分组、删除用户分组等,同时对操作结果再进行逻辑处理以供用户界面层显示。方法名:public bool CreateUserGroup()public bool UpdateUserGroup
16、() public bool DeleteUserGroup()public RGP.Modal.UserGroup GetUserGroupModal() 角色类(RGP_Roles 类)提供对角色管理、授权的一些逻辑操作,通过引用数据访问层相关方法以实现增加角色、更新角色、删除角色、查询角色、修改用户模块权限等,同时对操作结果再进行逻辑处理以供用户界面层显示。方法名:public bool CreateRole()public bool UpdateRole() public bool DeleteRole () public RGP.Modal.RGP_Roles GetRoleModal()pub