开篇

做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到控制权限的目的,这样就可以减少通常要在每个页面或按钮都要添加的权限验证代码。

通常的权限验证模式

一般的权限验证会控制到菜单(页面)就可以满足,复杂一点的会要求控制到按钮(功能点),这个都需要做一下几点工作:

1.按权限生成菜单,这是所有系统都要做的;

2.在每个页面的开始处添加登录和权限的验证,调用公共的验证方法,这个地方经常将页面的编号搞混;

3.隐藏(或这直接不生成)页面上没有权限的按钮;

4.在功能的响应点添加权限验证代码,添加、修改、删除等功能的后台处理入口处加判断。

这四个步骤中2、3、4都是比较繁琐的,非常容易搞错页面或功能的编号(通常是复制过来忘记修改),B/S系统要做好权限验证杜绝漏洞这四个点的控制都很重要的,当然不需要控制到按钮的第三步就可以省略了,有些时候大家会忽略对第四步的验证,比如在调用.ashx(一般处理程序)页面处理操作请求时,并没有在.ashx后台的代码中进行权限(或登录)验证,这样就存在安全隐患了。

新的的权限验证模式设计

新的权限验证模式想要达到的目的是将上面的 2、3、4繁琐的权限验证调用去掉,在IIS处理请求的总入口或出口通过请求的URL判断是否有权限,根据判断的结果对请求进行不同的处理(终止、跳转、提示或正常处理)。

通过查阅互联网资料发现可以通过httpModules来实现,对httpModules的详细介绍请参照点击打开链接

httpModules介绍博客地址: http://www.cnblogs.com/chenlulouis/archive/2009/12/18/1626918.html

通用权限验证组件设计:

1.选择在httpModules的PreRequestHandlerExecute事件作为权限验证控制点,在这个事件前面的其它事件Session还没有生效无法取到用户信息,越往后的事件所处理完成的请求越多,权限认证肯定是越早越好,所以就选择了这个事件。

2.通过配置文件控制权限的验证,需要配置的点主要有:

2.1基础配置:数据库连接字符串、URL截取规则、登录页面(为登录时跳转)、提示信息(没有权限时)、登录验证Session标志;

2.2验证URL:URL拼接参数配置(有些页面要拼接参数后作为整体判断权限);

2.3需验证页面:限定验证范围,图片、js文件这些肯定是不需要验证的,需要验证的通常情况下也都是可预知的,可按后缀名或路径配置;

2.4忽略验证页面:在需要验证的配置范围内有些页面是不需要验证的,如登录页、主框架页、修改密码等,可按后缀名或路径配置;

2.5权限查询语句:根据取到的URL判断登录用户是否有权限的SQL语句和语句参数;

2.6字功能查询语句:查询有权限的子功能的SQL语句和语句参数,权限需要控制到按钮时才需要。

3.实现参数的导入、解析按配置的要求实现权限的验证控制。

结尾

这样一个简单的ASP.NET通用权限验证组件就设计完毕了,接下来就是用代码实现了,本人计划用C#代码实现这个设计,主要是想通过这个组件的开发加深对IIS工作原理的认识和理解,提升开发通用功能的能力。

ASP.NET通用权限组件思路设计的更多相关文章

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

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

  2. ASP.NET通用权限系统快速开发框架

    系统在线演示地址: http://120.90.2.126:8051 登录账户:system,密码:system### DEMO下载地址: http://download.csdn.net/detai ...

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

    沙发(SF)通用权限验证组件 开篇 本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 1.   类介绍 1.SFWebPermissio ...

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

    软件技术开发,合作请联系QQ:858-048-581 开发工具 VS2010 .sql2005.2008等(在Sql server数据执行脚本即可)  VS2010 打开保证本地运行成功(数据库.源代 ...

  5. ASP.NET MVC权限控制思路

    在系统开发的时候一个老生常谈的权限管理问题,翻阅了很多的网络资料,但是总感觉离实际使用还有一段距离,其实权限控制无非就几个“请求.页面按钮.字段显示”, 对于前端权限就需要配合JS了, 这里主要展示我 ...

  6. asp.net MVC通用分页组件 使用方便 通用性强

    asp.net MVC通用分页组件 使用方便 通用性强   该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...

  7. asp.net MVC通用权限管理系统-响应式布局-源码

    一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...

  8. 基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术-Angel工作室通用权限管理

    一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...

  9. ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍

    一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...

随机推荐

  1. Linux用户和用户组

    用户分类 按位置分:本地账户.远程账户 按功能分:普通用户.超级用户(root) 普通用户: (1)系统用户:UID 1-499 (2)本地用户:UID 500+ 每一个用户,都有一个同名的用户组. ...

  2. bootstrap 常用类名

    一. 常用类1.container居中的内容展示2.row  行内容显示3.col 列内容显示, 列必须在row 中xs 宽度小于768 ,sm宽度小于990 大于768 ,md 宽度大于990,小于 ...

  3. 在IIS Express中调试时无法读取配置文件

    在IIS Express中调试代码时,如果出现“无法读取配置文件”的问题(如图),这种情况是IIS Express的“applicationhost.config”配置文件中的映射关系出了问题[ps: ...

  4. (转)浅谈ASP.NET报表控件

    项目中有报表图形化的需求, 于是开始在网上找第三方chart控件.因时间紧迫,大至确定了几个候选:一.Office带的OWC控件:二.ComponentOne:三.Web Chart.本文将讲解ASP ...

  5. javascript运动功能-分享到

    <script> //窗体载入,为div控件绑定事件 window.onload = function () { var div1 = document.getElementById('d ...

  6. Javascript页面跳转与浏览器兼容

    用<meta>标签实现的定时跳转: <meta http-equiv="refresh" content="5 url=http://www.baidu ...

  7. 使用repo的本地开发流程

    repo下的本地开发流程 单分支开发:    1 本地新建工作目录并初始化repo库: repo init;    2 下载代码(只取服务器当前分支): repo sync -c;    3 创建本地 ...

  8. 转:Dictionary<int,string>怎么获取它的值的集合?急!急!急!

    怎么获取Dictionary<int, string>的值?我知道这个是键值对的,我知道可以根据key得到value,但关键是现在连key也不知道啊就是想让这个显示在listbox中,应该 ...

  9. x^2+y^2=N的整数解?

    本文系转载:http://blog.sina.com.cn/s/blog_a661ecd50101cv41.html 我们先研究这个问题的一部分:哪些素数是两平方数之和?为什么我们先研究素数,有个很重 ...

  10. 关于link, visited, hover, active

    LoVe/HAte 如果只是希望点击的时候显示背景色,那么只需要设置 :active,无需设置:hover #navbar:active, #backbtn:active { background-c ...