HttpModule 的权限管理与工作原理

httpmodule是如何工作的

当一个http请求到达httpmodule时,整个asp教程.net framework系统还并没有对这个http请求做任何处理,也就是说此时对于http请求来讲,httpmodule是一个http请求的“必经之路”,所以可以在这个http请求传递到真正的请求处理中心(httphandler)之前附加一些需要的信息在这个http请求信息之上,或者针对截获的这个http请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的http请求,从而可以起到一个filter过滤器的作用

using system;
using system.collections.generic;
using system.text;
using system.web;

namespace myhttpmodule
{
    /// <summary>
    /// 说明:用来实现自己的httpmodule类。
    /// </summary>
    public class myfirsthttpmodule : ihttpmodule
    {
        private void application_beginrequest(object sender, eventargs e)
        {
            httpapplication application = (httpapplication) sender;

            httpcontext context = application.context;
            httprequest request = application.request;
            httpresponse response = application.response;

            response.write("我来自自定义httpmodule中的beginrequest<br />");
        }

        private void application_endrequest(object sender, eventargs e)
        {
            httpapplication application = (httpapplication) sender;

            httpcontext context = application.context;
            httprequest request = application.request;
            httpresponse response = application.response;

            response.write("我来自自定义httpmodule中的endrequest<br />");
        }

        #region ihttpmodule 成员

        public void dispose()
        {
        }

 

        public void init(httpapplication application)
        {
            application.beginrequest += new eventhandler(application_beginrequest);
            application.endrequest += new eventhandler(application_endrequest);
        }

        #endregion
    }
}

httpmodule 的权限管理

////下面是web.config 里面的

 

<httpmodules>
   <add name="scriptmodule" type="system.web.handlers.scriptmodule,
system.web.extensions, version=3.5.0.0, culture=neutral,
publickeytoken=31bf3856ad364e35"/>
   <add name="mymodule" type="mymodule.mymodule"/>
   <!--<add name="mymodule" type=""/>-->
  </httpmodules>
///这样每执行个页面会调用这个方法。

.net代码

 

using system.configuration;
using system.linq;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.htmlcontrols;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.xml.linq;

/// <summary>
///class1 的摘要说明
namespace mymodule
{
    public class mymodule : ihttpmodule
    {
        /// <summary>
        /// 初始化加入两个事件到application 里面去.
        /// </summary>
        /// <param name="application"></param>
        public void init(httpapplication application) 
        {
            application.beginrequest += (new
            eventhandler(this.application_beginrequest));
            application.endrequest += (new
            eventhandler(this.application_endrequest));
        }
        ///在这里必须相当于是把response转过来。在这里根本直接用不了。不知道为啥。
        ///写这个的作用是进行权限判断。
        private void application_beginrequest(object source, eventargs e) 
        {
            httpapplication application = (httpapplication)source;
            httpresponse responseo教程k = application.context.response;

           
           
            responseok.write("<h1>beginning of request</h1><hr>");
           
        }
        private void application_endrequest(object source, eventargs e)
        {
            httpapplication application = (httpapplication)source;
            httpresponse responseok = application.context.response;
            responseok.write("<h1>end of request</h1><hr>");
        }
        public void dispose() { }
    }
}

时间: 2024-11-29 09:02:02

HttpModule 的权限管理与工作原理的相关文章

JavaScript 包管理器工作原理简介

本文讲的是JavaScript 包管理器工作原理简介, 不久前,Node.js 社区的负责人之一 ashley williams 发了一条这样的推特: lockfiles = awesome for apps, bad for libs this is not a new thought, i'm confused why's everyone mad about this 锁文件 = 棒(对于应用而言),坏(对于库而言),这不是一个新想法,我只是很困惑,为什么所有的人都因为这个很崩溃 - @a

linux 文件系统的管理 (硬盘) 工作原理

一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16X4的空间就是存储分区表信息的位置:如下图 2.在分区表中,主要储存了以下信息:(1)分区号,常见的分区号有以下几种:其它编号可以使用fdisk指令,再执行 l (小写L) 查看 0x5 (or 0xf) 扩展分区 0x82 Linux swap 0x83 Linux 0x8e Linux LVM

详细解析路由器工作原理

路由器工作原理概述在控制平面上, 路由协议可以有不同的类型.路由器工作原理通过路由协议交换网络的 拓扑结构信息,依照拓扑结构动态生成路由表.在数据通道上,转发引擎从输入线路接收IP包 后,分析与修改包头,使用转发表查找输出端口,把数据交换到输出线路上.转发表是根据路由表生成的,其表项和路由表项有直接对应关系,但转发表的格式和路 由表的格式不同,它更适合实现快速查找.转发的主要流程包括线路输入.包头分析.数据存储.包头修改和线路输出.路由协议根据网 络拓扑结构动态生成路由表.IP协议把整个网络划分

Android权限管理原理(含6.0)

前言 Android系统在MarshMallow之前,权限都是在安装的时候授予的,虽然在4.3时,Google就试图在源码里面引入AppOpsManager来达到动态控制权限的目的,但由于不太成熟,在Release版本中都是把这个功能给隐藏掉的.在6.0之后,Google为了简化安装流程且方便用户控制权限,正式引入了runtime-permission,允许用户在运行的时候动态控制权限.对于开发而言就是将targetSdkVersion设置为23,并且在相应的时机动态申请权限,在适配了Andro

Yii中srbac权限扩展模块工作原理与用法分析_php实例

本文实例讲述了Yii中srbac权限扩展模块工作原理与用法.分享给大家供大家参考,具体如下: 1. 设置权限规则表:可放在module模块配置文件里面 public function init() { //操作权限表,必须存在以下字段: //itemname角色名/ID, //type授权项目类型/1(任务)或者2(角色), //bizrule权限/逻辑运算表达式为false是有权限操作, //data数据/YII暂无利用 Yii::app()->authManager->itemTable

Yii中srbac权限扩展模块工作原理与用法分析

本文实例讲述了Yii中srbac权限扩展模块工作原理与用法.分享给大家供大家参考,具体如下: 1. 设置权限规则表:可放在module模块配置文件里面 public function init() { //操作权限表,必须存在以下字段: //itemname角色名/ID, //type授权项目类型/1(任务)或者2(角色), //bizrule权限/逻辑运算表达式为false是有权限操作, //data数据/YII暂无利用 Yii::app()->authManager->itemTable

Java规则引擎工作原理及其应用

摘 要 Java规则引擎是一种嵌入在Java程序中的组件,它的任务是把当前提交给引擎的Java数据对象与加载在引擎中的业务规则进行测试和比对,激活那些符合当前数据状态下的业务规则,根据业务规则中声明的执行逻辑,触发应用程序中对应的操作. 引言 目前,Java社区推动并发展了一种引人注目的新技术--Java规则引擎(Rule Engine).利用它就可以在应用系统中分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时可以动态地管理和修

浅谈权限管理的对象模型和实现

对象 浅谈权限管理的对象模型和实现    beegee(原作) 关键字    权限管理 对象模型 ACL 电子政务 浅谈权限管理的对象模型和实现 beegee (2003-7-16) 目录: 1.权限管理问题的分析 1.1权限管理简要分析 1.2电子政务系统的权限管理 1.3商业化应用系统的权限管理 1.4他山之石 2.权限管理子系统设计 2.1权限管理子系统的总体目标 2.2权限管理子系统的对象模型 2.3注意与不足 3.权限管理子系统的实现 3.1面向对象的实现 3.2组件层与功能层对对象的

ASP.NET页面与IIS底层交互和工作原理详解

ASP.NET页面与IIS底层交互和工作原理详解  第一回:   引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实现某个特定的功能. 这种做法,实际上是回答了"如何去做"的问题,却没有回答"为什么可以这样做"的问题. 尽管我很推崇 悉江华 先生的<圣殿祭祀的Asp.Net开发详解>一书,但当我翻看了一下其对角色(R