ASP.NET通用权限组件实现一

沙发(SF)通用权限验证组件

开篇

上一篇提到了通用权限的设计思路,根据设计思路一步一步的来实现一个相对通用的权限验证组件。在VS2010下用C#语言基于.net framework2.0框架实现具体功能。

配置文件

配置文件为XML格式(SFPermission.xml)公有四个节点分类:

一、AppSet节点:此节点配置一些基础信息。

 1 <AppSet>
 2     <!--数据库节点名称(必须在Web.config的connectionStrings节点下面)-->
 3     <add key="DataConnName" value="ConnString"/>
 4     <!--数据库连接字符串(DataConnName和ConnString节点只要有一个存在即可)-->
 5     <add key="ConnString" value="数据库连接字符串"/>
 6     <!--页面截取规则(0:只截取文件名,1:截取全路径,2:截取全路径(单文件去掉第一个[/]、包含路径的保留第一个[/]),可以在Page节点配置例外)-->
 7     <add key="PageAllPath" value="2"/>
 8     <!--未登录时的返回页面(登录验证为通过或SQL语句参数要取的Session值为空或不存在)-->
 9     <add key="OutLogin" value="未登录时的输出信息"/>
10     <!--登录验证的Session名称-->
11     <add key="LoginSessionName" value="SysUserCode"/>
12 </AppSet>

二、MessageSet节点:没有权限时提示信息的配置。

1 <MessageSet>
2     <!--没有权限时的配置信息(Key为后缀名[后缀名为通配]或文件名,value为需要输出的文本)-->
3     <add key=".aspx" value="没有权限"/>
4     <!--没有权限时的配置信息(Key为后缀名,value为需要输出的文本)-->
5     <add key=".ashx" value="没有权限"/>
6 </MessageSet>

三、Pages节点:配置在截取验证URL的名称时要拼接参数的参数。

1 <!--需要连接参数的页面配置(配置的页面将用组合后的整体作为验证权限的页面名称)-->
2   <Pages>
3     <!--名称的第一个字符为(点)表示此种后缀名的请求都将连接某参数,value多个参数名用逗号分隔-->
4     <add key=".ashx" value="Action" />
5 </Pages>

四、Permission节点:配置需要权限验证的页面、忽略权限验证的页面、权限验证的SQL语句、有权限的子功能(权限控制到按钮时)查询语句。

 1 <Permission>
 2     <!--做权限验证的页面(.开始表示后缀名通配规则,/开始表示目录通配,/结束标志包含子目录)-->
 3     <PermissionPage>
 4       <add value="/Manage" />
 5       <add value=".aspx" />
 6       <add value=".ashx" />
 7     </PermissionPage>
 8     <!--不作权限和登录验证的页面(.开始表示后缀名通配规则,/开始表示目录通配,/结束标志包含子目录)-->
 9     <Ignore>
10       <add value="/Manage/Default.aspx" />
11       <add value="/Manage/Login.aspx" />
12       <add value="/Manage/VerifyCode.aspx" />
13     </Ignore>
14     <!--查询URL记录的SQL语句(可以有多个,只要有一个语句查询到记录即可,只有能查询到记录的URL请求才会进行权限验证)-->
15     <PermissionUrlSQL>
16       <!--查询权限SQL语句-->
17       <CommandText value="select A.FID from Man_Function A where [email protected]" />
18       <Parameter>
19         <!--SQL语句参数名-->
20         <ParameterName value="@FURL" />
21         <!--SQL语句参数类型-->
22         <DBType value="VarChar" />
23         <!--SQL语句参数要取的Session名称([PageName]表示取URL的字符串)-->
24         <SessionName value="PageName" />
25       </Parameter>
26     </PermissionUrlSQL>
27     <!--权限验证SQL语句(可以有多个,只要有一个语句验证有权限则可以通过)-->
28     <PermissionSQL>
29       <!--查询权限SQL语句-->
30       <CommandText value="select A.FID from Man_Function A,Man_Popedom B where A.FID=B.FID AND [email protected] AND [email protected]" />
31       <Parameter>
32         <!--SQL语句参数名-->
33         <ParameterName value="@EmpCode" />
34         <!--SQL语句参数类型-->
35         <DBType value="VarChar" />
36         <!--SQL语句参数要取的Session名称([PageName]表示取URL的字符串)-->
37         <SessionName value="SysUserCode" />
38       </Parameter>
39       <Parameter>
40         <!--SQL语句参数名-->
41         <ParameterName value="@FURL" />
42         <!--SQL语句参数类型-->
43         <DBType value="VarChar" />
44         <!--SQL语句参数要取的Session名称([PageName]表示取URL的字符串)-->
45         <SessionName value="PageName" />
46       </Parameter>
47     </PermissionSQL>
48     <!--查询URL子项记录的SQL语句(可以有多个,只要有一个语句查询到记录即可,只有能查询到记录的URL请求才会进行权限验证,通常情况是权限需要控制到按钮时需要的)-->
49     <ChildUrlSQL>
50       <!--查询权限SQL语句-->
51       <CommandText value="select A.FID from Man_Function A where [email protected]" />
52       <Parameter>
53         <!--SQL语句参数名-->
54         <ParameterName value="@FID" />
55         <!--SQL语句参数类型-->
56         <DBType value="Int" />
57         <!--SQL语句参数要取的Session名称([PageName]表示取URL的字符串)-->
58         <SessionName value="PageName" />
59         <!--SQL语句参数要取的列名称(PermissionSQL结点中SQL语句的列,[PageName]表示取URL的字符串),和SessionName节点不能同事存在-->
60         <ColumnName value="FID" />
61       </Parameter>
62     </ChildUrlSQL>
63     <!--菜单的子项查询(通常情况是权限需要控制到按钮时需要的)-->
64     <ChildSQL>
65       <!--查询SQL语句-->
66       <CommandText value="select A.FID from Man_Function A where [email protected]" />
67       <Parameter>
68         <!--SQL语句参数名-->
69         <ParameterName value="@FID" />
70         <!--SQL语句参数类型-->
71         <DBType value="Int" />
72         <!--SQL语句参数要取的Session名称-->
73         <SessionName value="DateTime" />
74         <!--SQL语句参数要取的列名称(PermissionSQL结点中SQL语句的列,[PageName]表示取URL的字符串),和SessionName节点不能同事存在-->
75         <ColumnName value="FID" />
76       </Parameter>
77       <!--按钮权限标志的列名称,这个值是要和前台页面元素的[sfcode]的值所对应的-->
78       <ButtonFlagColumn value="FID" />
79     </ChildSQL>
80 </Permission>

其中ChildUrlSQL和ChildSQL节点是在权限验证控制到按钮(功能点)时才用到的,如果只是控制到页面可以删除这两个节点;

PermissionUrlSQL和PermissionSQL节点是控制到页面时的权限验证的SQL语句配置,如果只是做简单的登录验证也可以删除这两个节点。

下一篇文章将介绍组件的整体结构和实现,具体的编码工作也已经完成,初步测试了一下还可以。

ASP.NET通用权限组件实现一

时间: 2024-08-24 02:18:47

ASP.NET通用权限组件实现一的相关文章

ASP.NET通用权限组件思路设计

开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到控制权限的目的,这样就可以减少通常要在每个页面或按钮都要添加的权限验证代码. 通常的权限验证模式 一般的权限验证会控制到菜单(页面)就可以满足,复杂一点的会要求控制到按钮(功能点),这个都需要做一下几点工作: 1.按权限生成菜单,这是所有系统都要做的: 2.在每个页面的开始处添加登录和权限的验证,调

ASP.NET通用权限验证组件实现

沙发(SF)通用权限验证组件 开篇 本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 1.   类介绍 1.SFWebPermission:实现IHttpModule接口,权限验证入口: 2.SFConfig:导入XML配置类: 3.SFPermission:解析XML配置进行权限验证: 4.SFAccessOper:数据库操作类: 5.SFPermissionSQL:XML节点实体类: 6.SFParameter:XML节点实体类

ASP.NET通用权限框架 权限管理系统源码jquery 精美UI源码

开发工具 VS2010 .sql2005.2008等(在Sql server数据执行脚本即可)  VS2010 打开保证本地运行成功(数据库.源代码)  设计结构采用标准三层设计,是一套非常成熟的框架程序,可直接用于大型系统基础框架快速开发,及程序员学习. 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参数) 8.附加属性(自定义属性) 9.系统日志(异常记录) 10.数据库备份/还原 11

使用通用权限管理系统组件的随想 - 提高开发能力、规范开发、快速见效

本人供职于国内一家比较知名的物流公司,一直从事于基层公司物流软件的规划和设计开发工作,在长期的工作实践中深深地体会到作为不是专业的软件行业而又从事软件开发行业的业余性的软件开发设计人员来说,在工作中需要克服的困难和面对的艰辛有多大多难. 对与专业的软件开发设计公司来说,毋庸置疑的一点是都会有自己成熟稳定的开发框架和组件,并且是在不断的完善中,对供职其中的开发设计人员在完成业务性的开发设计工作外日常工作的一个重心就在于了解.熟悉进而创新性的完善他.作为软件开发设计人员都知道,任何一个软件系统都离不

如何在通用权限管理系统中集成log4net日志功能

开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个组件的介绍 ”Log4net是基于.net开发的一款非常著名的记录日志开源组件.最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源, 于另外的一个非常著名的姐妹组件-log4j.现由Apache组织开发与维护.此日志架构是可灵活扩展,且通过配置文件来设置日志的属性及输出,

通用权限系统框架功能实现设计

1  开发环境技术:B/S(.NET C# ) 1.Windows 7及以上 (支援最新Win 8) 2.Microsoft Visual Studio 2013 C#.NET 3..NET Framework 4.0及以上 (支援最新4.5版本) 4.SQL Server 2008 R2及以上 (支援2012/2014)框架特点 2  系统简介 1.帮企业快速地实现各种通用功能,结合系统现有的通用权限管理功能. 2.快速地开发出各种项目应用系统.让企业开发一个系统变得非常轻松. 3.符合RBA

通用权限管理系统菜单展示的一个技巧

从这篇文章,希望您了解吉日嘎拉通用权限管理系统菜单项展示技巧. 项目中使用了吉日嘎拉的通用权限管理系统,几十个子系统均由该权限管理系统管理. 在系统中配置好相关菜单及非菜单项,配置截图: 菜单权限设置截图 通过下拉菜单进入其中的一个子系统 子系统中的菜单项(菜单项表示该项会在前端需要展示出来,用于用户点击的项目),其中的公开表示所有人均可看到该菜单项目. 子系统中的非菜单项(非菜单项表示该项目不需要在前端展示出来,比如有些在页面中的弹出窗口.按钮等项目) 通过单点登录到子系统以后,通过一个服务获

通用权限管理系统与第三方前端控件集成实现的多种选择功能

在项目中使用使用了通用权限管理系统的底层代码,同时配合前端控件,实现多种输入选择的功能: 1:直接输入框选择的 实现在输入字符时自动去后台检索,将匹配项显示在下拉框中,后台对应的实现代码截图: 2:输入框,弹出窗口选人的. 这个功能可实现在点击输入框右侧的按钮时弹出一个窗口,在窗口中点击行时将会将改行对应的项回填到输入框中,窗口中的实现比较简单,有些难度的时点击行时的事件,下面是JS代码部分. 弹出窗口中的双击事件 //双击向top.frmright的窗口传值 function onDblCli

IIS6缺少ASP.NET v2.0组件

服务器上安装了ASP.NET v2.0组件,但是在IIS的Web服务扩展中并没有找到ASP.NET v2.050727这项,这导致基于.NET2.0开发的网页都无法正常浏览. 解决方法:打开IIS,转至Web服务扩展中,点击右侧窗口任务下的“添加一个新的Web服务扩展”,在弹出的窗口中,点击添加,然后找到x:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(x为系统安装盘符,一般为C),再点击确定按钮保存设置,最后再设置其状