也晒晒我的RBAC系统(三):后台管理程序源码及使用演示

    源代码下载 

    本来想一起提供整个框架的程序源码的。但怎么开源,用哪种协议一直没弄明白,得了解一下。所以先把后台管理部分的源码放上来,并提供使用演示。熟悉了使用,再看源码应该更好一些吧。    

    说点废话(这段无关技术,可以跳过不看):这个系列放了很长时间了,一直想写,但却一直没有写(说白了就是比较懒吧),总想等成熟一些再说。有朋友希望看源代码的,也没有发布,不是因为保守,而是怕发布后被说代码太烂。等系统比较成熟后,又感觉RBAC比较过时了,也不好意思再续了。但近期看到了园子里还有讨论RBAC的文章,系统有开源的,也有收费的。虽然同是为了处理权限,但各自的实现思路却不尽相同。因此代码烂不烂的我也不考虑了,还是希望能为大家提供另一种思路。而且毕竟一个人的精力有限,如果园子里有对这方面感兴趣的朋友,能够提供一些思路、技术上的建议,那就更好不过了。

    

    转入正题,先看一下系统的演示界面

    这里提供演示的是B/S结构的后台管理程序。本来计划还需要做一套C/S结构的后台管理程序,但一直没有C/S的项目,没有这方面的需求,所以也就没有做的动力了。

    1、用户登录。

    这个没什么说的。

01

    2、欢迎窗口。

    这个可以根据自己的需要添加内容,也没什么可说的。

02

    3、用户管理

    (1)提供用户的添加、删除、重设密码等管理功能。

    (2)可以通过“所属角色”按钮设置用户所属角色。

    (3)可以通过“所属分组”按钮设置用户所属分组。

03

    4、分组管理。

    提供分组的添加、删除等管理功能。

04

    5、角色管理

    (1)提供角色的添加、删除等管理功能

    (2)通过“权限设置”按钮可以设置角色所具有的权限。这个演示只添加了RBAC的基本权限,没有添加业务权限。 

05 

    使用的方法也很简单

    首先设置不同的角色,并为每个角色设置相应的权限。添加用户后,只要将用户加入到指定角色中,用户既具有了此角色所拥有的权限。一个用户可以同时加入多个角色,用户权限为多个角色的累加权限。

    分组的功能比较复杂,而且需要涉及到二次开发,本篇先不做介绍了。

    下面细说一下如何在一个实际项目中使用此系统

   

    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来完成此项工作。   

06    

    (1)定义资源组

    对资源进行分组,这个不是必须要做的。当资源过多时,通过资源组来划分,可以方便用户更好的定位资源。此处示例的是“后台管理程序”中,专门为后台权限管理所涉及到的资源建立的一个资源组。对于实践项目中,可以根据项目中的功能分类来建立资源组及下属子组,细分资源。

07

    (2)定义资源

    这里可以定义项目中涉及到的所有资源。此处示例的是在“后台管理程序”中,定义的4项资源,用来对应程序中的3部分功能和登陆窗口。

08

    (3)定义操作

    这里可以定义对全部资源的全部操作类型。项目中的所有与权限相关的操作,都需要在此处定义后才能使用。

09

    (4)定义权限

    有了资源和操作类型,就可以定义具体权限了。此处示例的是在“后台管理程序”中,所用到的所有权限。这里需要注意的是,只有项目中会用到的权限才需要打勾,如“(登陆)后台”这项资源,只需要勾选“执行”,而无需勾选“添加”、“删除”等操作,因为实际项目中只会检测用户有没有登陆后台的权限,而不会检测用户是否能增加、删除后台(就一个后台,删了怎么管理啊^_^)。

10

    (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,请您及时告知我,以便于我进行修整。如果哪位对“后台管理程序”做出了修整或改进,也希望您能发给我,我就能偷个懒了。

原文地址:https://www.cnblogs.com/benbenkoala/p/1664929.html