日期:2013-08-07  浏览次数:20584 次

权限管理工具的使用

在当今商业软件的开发中有一项功能是必不可少的,这就是权限工具,想必大家对权限这个词不会太陌生,应为在我们身边的很多软件上都用到了权限,比如说最常见的Windows操作系统,就使用到了权限,但是在实际的开发过程中,权限是个相当麻烦的东西。大家都在寻找一种简易的权限管理方式,这个时候我们发现了CG.Security这个组件,这是一个非常优秀的功能权限管理组件,它可以让我们非常简便的来控制软件的权限。

使用CG.Security你可以任意添加删除权限、角色和权限。可以通过大多数的权限管理方式给用户赋予角色或直接给用户赋予权限。

好了,简短介绍了CG.Security的功能后下面将为大家来讲解下该组件的用法。在讲解之前请首先到http://www.codeproject.com/csharp/CGSecurity.asp上下载该组件。

下面的讲解会分两个部分:

第一部分将讲解该类库中常见的一些方法属性的用法。第二部分通过一个小DEMO,给大家一个感性的认识,让大家了解在实际开发中如何使用CG.Security。



一、 类库的常用方法

在这个组件中用了六个类来分别实现了用户管理、权限管理和角色管理。

UserManager(用户管理类):该类提供了添加、删除和查找用户的方法。

RoleManager(角色管理类):该类提供了添加、删除和查找角色的方法。

RightManager(权限管理类):该类提供了添加、删除和修改权限的方法。

UserRightManager(用户权限管理类):该类的作用是使用户和权限关联,也提供了增、删、查的功能,使用此类,可以为某个用户直接赋予权限。

UserRoleManager(用户角色管理类):该类和上面的UserRightManager相似,也提供了相似的功能,所不同的是该类是把用户和角色进行关联。

RoleRightManager(角色权限管理类)该类提供了角色和权限关联的功能。



在介绍了上述六个类后,下面还要为大家介绍在实际开发中会用到的一个类。

SecurityManager.cs 类,该类提供了登陆验证(Authenticate)和获得该用户权限列表(EffectiveRights)的功能。使用该类我们可以判断用户的合法性并且能得到当前用户的权限列表。



上面介绍了权限管理组件中几个常见类的功能。让大家对权限管理组件有一个全面的了解,下面的一部分我将一步一步做出一个小DEMO让大家对这个组件有一个感性的认识。OK,偶们进入下一环节吧。



二、 做一个小Demo来演示如何使用这个权限工具



1. 首先我们要从网上下载该组件,该组件可以从http://www.codeproject.com/csharp/CGSecurity.asp上找到,在下载后在bin/release目录下找到CG.Security.dll文件。



2.新建一个解决方案CGTest。



3.然后在Form1上添加12个按钮分别为btnAddUser、btnDelUser、btnAddRole、btnDelRole、btnAddRight、btnDelRight、btnAddUserRole、btnDelUserRole、btnAddRoleRight、btnDelRoleRight、btnAddUserRight、btnDelUserRight。

上述12个按钮大家从字面上都可以了解到是什么含义。在这里还要添加一个checkbox,命名为cbUserRight。



4.在添加完按钮后我们再在Form1上添加6个DataGrid分别命名为dgUser、dgRole、dgRight、dgRoleRight、dgUserRole、dgUserRight。这六个按钮分别显示出了6个数据表里面的数据。经过3、4两个步骤后我们的程序的管理权限部分就添加完成了,但是做了管理权限后我们如何来使用这个权限呢?下面一步将向大家介绍如何来控制权限。



5.我们可以在界面上添加两个个按钮btnTestAll,btnTestSingle。btnTestAll是所有人都能操作的,但是btnTestSingle则是拥有某个权限的人才能操作的。



6.上面添加的是我们的主界面,下面我们还要添加一个用来输入用户名密码等信息的辅助界面,在工程上添加一个新的Windows窗体,然后命名为FormValue。当窗体新建好后在窗体上新建textbox、button一样两个。textbox分别命名为txtName,txtPwd,button分别命名为btnOK,btnCancel。并且把btnOK的dialogresult属性设置为OK,btnCancel的dialogresult属性设置为Cancel。窗体设置完后我们在代码中添加两个属性

public string UID

{

get{return txtName.Text.Trim();}

}



public string PWD

{

get{return txtPWD.Text.Trim();}

}



7.首先在项目种引用CG.Security.dll这个组件。在FORM1上导入CG.Security和CG.Security.Principal这两个命名空间。

using CG.Security;

using CG.Security.Principal;



8. 在添加完引用后。我们还有两个东西要准备,数据库和程序的配置文件配置文件,数据库大家可以在该组件Demo的Database目录下找到security.mdb这个文件,把该文件Copy到我们CGTest项目的Debug目录下。搞定数据库后下面我们还要添加一个配置文件,那么首先我们添加一个新的App.Config,然后Copy下列代码到App.Config中:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>



<configSections>

<sectionGroup name="CG.Security.Data">

<section name="runtimeSetup" type="CG.Security.Data.Configuration.DataSettingsHandler, CG.Security" />

</sectionGroup>

</configSections>



<CG.Security.Data>

<runtimeSetup defaultSection="Access">

<installedAssembly>

<add

sectionName="Access"

targetAssembly="CG.Security"

targetNamespace="CG.Security.Data.Access"

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Sou