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

  • 相关阅读:
    297. Serialize and Deserialize Binary Tree
    331. Verify Preorder Serialization of a Binary Tree
    332. Reconstruct Itinerary
    329. Longest Increasing Path in a Matrix
    319. Bulb Switcher
    292. Nim Game
    299. Bulls and Cows
    Ice Cream Tower Gym
    B
    C
  • 原文地址:https://www.cnblogs.com/benbenkoala/p/1664929.html
Copyright © 2020-2023  润新知