也晒晒我的RBAC系统(三):后台管理程序源码及使用演示
本来想一起提供整个框架的程序源码的。但怎么开源,用哪种协议一直没弄明白,得了解一下。所以先把后台管理部分的源码放上来,并提供使用演示。熟悉了使用,再看源码应该更好一些吧。
说点废话(这段无关技术,可以跳过不看):这个系列放了很长时间了,一直想写,但却一直没有写(说白了就是比较懒吧),总想等成熟一些再说。有朋友希望看源代码的,也没有发布,不是因为保守,而是怕发布后被说代码太烂。等系统比较成熟后,又感觉RBAC比较过时了,也不好意思再续了。但近期看到了园子里还有讨论RBAC的文章,系统有开源的,也有收费的。虽然同是为了处理权限,但各自的实现思路却不尽相同。因此代码烂不烂的我也不考虑了,还是希望能为大家提供另一种思路。而且毕竟一个人的精力有限,如果园子里有对这方面感兴趣的朋友,能够提供一些思路、技术上的建议,那就更好不过了。
转入正题,先看一下系统的演示界面
这里提供演示的是B/S结构的后台管理程序。本来计划还需要做一套C/S结构的后台管理程序,但一直没有C/S的项目,没有这方面的需求,所以也就没有做的动力了。
1、用户登录。
这个没什么说的。
2、欢迎窗口。
这个可以根据自己的需要添加内容,也没什么可说的。
3、用户管理
(1)提供用户的添加、删除、重设密码等管理功能。
(2)可以通过“所属角色”按钮设置用户所属角色。
(3)可以通过“所属分组”按钮设置用户所属分组。
4、分组管理。
提供分组的添加、删除等管理功能。
5、角色管理
(1)提供角色的添加、删除等管理功能
(2)通过“权限设置”按钮可以设置角色所具有的权限。这个演示只添加了RBAC的基本权限,没有添加业务权限。
使用的方法也很简单
首先设置不同的角色,并为每个角色设置相应的权限。添加用户后,只要将用户加入到指定角色中,用户既具有了此角色所拥有的权限。一个用户可以同时加入多个角色,用户权限为多个角色的累加权限。
分组的功能比较复杂,而且需要涉及到二次开发,本篇先不做介绍了。
下面细说一下如何在一个实际项目中使用此系统
1、在实际项目数据库中添加系统所需的数据表数据
注意:此RBAC系统的数据库是在SQL Server 2008上调试的,因此不保证支持其他数据库(SQL Server 2005也应该没问题)。如需要支持其它数据源,则需要写新的DAL层。
首先需要在实际项目数据库中添加此系统需要的数据表和数据,执行“Document Project\Modeling文件夹”下的建库脚本,即可完成数据表的创建和基础数据的生成
(1)《1.SQLServer 建库脚本 CreateDB.sql》:此脚本用于创建数据表。
(2)《3-1.SQLServer 数据初始化(基础数据).sql》:此脚本用于生成系统所需的基础数据,没有这些数据,则系统运行时会出错崩溃。此脚本不能和下一个脚本同时执行。
(3)《3-2.SQLServer 数据初始化(基础数据+基本权限).sql》:此脚本用于用于生成系统所需的基础数据,然后生成前面演示的“后台管理程序”中所需要的权限定义。这样在使用“后台管理程序”时,就不用重新生成权限定义而可以直接使用了。此脚本不能和前一个脚本同时执行。
2、定义项目权限
建立数据库后,首先需要定义项目所需使用到的全部权限。用“Privilege Config Tool文件夹”下的权限配置工具ksRBAC.PrivilegeConfigTool.exe来完成此项工作。
(1)定义资源组
对资源进行分组,这个不是必须要做的。当资源过多时,通过资源组来划分,可以方便用户更好的定位资源。此处示例的是“后台管理程序”中,专门为后台权限管理所涉及到的资源建立的一个资源组。对于实践项目中,可以根据项目中的功能分类来建立资源组及下属子组,细分资源。
(2)定义资源
这里可以定义项目中涉及到的所有资源。此处示例的是在“后台管理程序”中,定义的4项资源,用来对应程序中的3部分功能和登陆窗口。
(3)定义操作
这里可以定义对全部资源的全部操作类型。项目中的所有与权限相关的操作,都需要在此处定义后才能使用。
(4)定义权限
有了资源和操作类型,就可以定义具体权限了。此处示例的是在“后台管理程序”中,所用到的所有权限。这里需要注意的是,只有项目中会用到的权限才需要打勾,如“(登陆)后台”这项资源,只需要勾选“执行”,而无需勾选“添加”、“删除”等操作,因为实际项目中只会检测用户有没有登陆后台的权限,而不会检测用户是否能增加、删除后台(就一个后台,删了怎么管理啊^_^)。
(5)生成权限文件
定义并保存好权限后,数据库中就有了权限的定义数据,每一项权限都有一条对应的数据。但其是以GUID的格式存储的,查找起来非常费时,直接使用不具有可行性。所以此处用“生成枚举代码”功能生成C#枚举代码,然后就可以直接用名称检索具体权限了。运行时系统会自动将名称转换为GUID,确定具体权限。
例如需要使用添加用户这项权限,只需要输入(KoalaStudio.RBAC.)Privilege.BasePrivilege.User.Add,即可表示此项权限。
因为每个项目的权限定义是不同的,因此每个项目都需要生成权限代码,供RBAC系统使用。在“后台管理程序”中,此代码存储在App_Code下的Privilege.cs文件中。实际使用时可以将其存在任意文件内,也可修改命名空间。
3、导入RBAC系统生成的DLL文件
在实际项目中引用“Document Project\DLLReference文件夹”下的DLL文件。
(1)ksRBAC.BLL.dll
(2)ksRBAC.Entity.dll
(3)ksRBAC.IDAL.dll
(4)ksRBAC.ClassFactory.dll
(5)ksRBAC.RBACManager.dll
4、导入“后台管理程序”到项目中
(1)将“ksRBAC Manager\Demo for WebForm文件夹”下的内容复制到实际项目的根目录下,注意不要覆盖项目中已存在的文件。
(2)在项目的web.config中加入如下字段
<configuration>
<appSettings>
<add key="ksRBAC_DALFile" value="ksRBAC.SQLServerDAL"/>
<add key="ksRBAC_DataAccessLayer" value="SQLServerDAL"/>
</appSettings>
……
</configuration>
5、运行“后台管理程序”
将“Management\Default.aspx文件”设为起始页,运行一下,看看效果。
后台管理程序只是此RBAC系统的一个实现,与RBAC框架是分离的
这里简单说明一下,本文所介绍演示的这个“后台管理系统”,只是此RBAC框架的一个前端实现,而不是必须此RBAC框架所必需的一部分。也就是说,只需要在项目中加入RBAC框架文件(9个DLL),就可以进行权限的编程工作了,不是必须使用演示的“后台管理系统”才能调用此RBAC框架。这样给了用户非常大的自由度,用户在使用时无需受到一些特定的限制。
此处所提供的“后台管理系统”,是根据我项目中的后台管理需求而设计的,同时也方便了以后项目的开发。您也可以设计自己的后台管理权限,加入或去掉一些权限,使其更适合自己(需要同时修改前台,如去掉分组权限的控制,则前台的分组页面也应该去掉或撤销权限验证部分),或者干脆再开发一套新的前台页面。如果已经有自己的后台,不想使用这套权限管理系统,也可以在后台中直接调用此RBAC框架,完成权限验证工作。
因为我不太擅长前台设计,所以提供的这套前台程序只保证了功能的实现,而对输入验证、操作界面、版面设计、美观性等处有很多问题没有解决,欢迎大家提出建议。对于程序中的Bug,请您及时告知我,以便于我进行修整。如果哪位对“后台管理程序”做出了修整或改进,也希望您能发给我,我就能偷个懒了。
作者:行一山人
出处:http://www.cnblogs.com/benbenkoala/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。