也晒晒我的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 ProjectModeling文件夹”下的建库脚本,即可完成数据表的创建和基础数据的生成
(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 ProjectDLLReference文件夹”下的DLL文件。
(1)ksRBAC.BLL.dll
(2)ksRBAC.Entity.dll
(3)ksRBAC.IDAL.dll
(4)ksRBAC.ClassFactory.dll
(5)ksRBAC.RBACManager.dll
4、导入“后台管理程序”到项目中
(1)将“ksRBAC ManagerDemo for WebForm文件夹”下的内容复制到实际项目的根目录下,注意不要覆盖项目中已存在的文件。
(2)在项目的web.config中加入如下字段
……
5、运行“后台管理程序”
将“ManagementDefault.aspx文件”设为起始页,运行一下,看看效果。
后台管理程序只是此RBAC系统的一个实现,与RBAC框架是分离的
这里简单说明一下,