http modules在.net安全认证中的作用

介绍一下如何在asp.net中使用http moudle创建自定义的安全认证

首先了解asp.net对web request的处理过程
http modules是一个实现了IHTTPModule接口基础类. 用来处理Web Request.
asp.net内置的Modules有
Output Cache Module
Windows Authentication Module
Forms Authentication Module
Passport Authentication Module
URL Authorization Module
File Authorization Module
我们可以修改这些现有的modules来增加新的功能,也可以新增modules来自定义功能.比如,我们可以自定义安全模块利用活动目录.

modules在http application event触发时被执行
IHTTP Module有以下两个方法
   Init( HttpApplication objApplication)
          为HttpApplication Events注册event handler.
   Dispose()
          Release the resources.

实现自定义custom http module的步骤
1.创建一个实现了IHTTPModule接口的类
using System;
using System.Web;
namespace CustomModule
{
public class CustomAuthnModule : IHttpModule
{
public CustomAuthnModule()
{
}
public void Init(HttpApplication objHttpApp)
{
}
public void Dispose()
{
}
}

2.在Init方法中注册Events
public void Init(HttpApplication objHttpApp)
{
objHttpApp.AuthenticateRequest
+=new EventHanlder(this.CustomAuthentication);

3.编写注册event的处理函数
private void CustomAuthentication (object sender,EventArgs evtArgs)
{
HttpApplication objHttpApp
=(HttpApplication) sender;
objHttpApp.Context.Response.Write(
"Custom Authentication Module is Invoked");

4.在GAC中加入DLL
1)创建一个强名称文件
sn –k key.snk
2)将key文件加入到AssemblyInfo.cs的属性AssemblyKeyFile中
3)gacutil /i CustomModule.dll

5.在web.config注册HttpModule
<httpmodules /><httpModules>
<add name ="ModuleName" type="Namespace.ClassName","AssemlbyName">
</add >
</httpModules> </httpModules>

实例:一个基于数据库身份认证的自定义Module
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
namespace CustomAuthorizationModule
{
public class CustomAuthorizationModule : IHttpModule
{
public CustomAuthorizationModule()
{

}
public void Init(HttpApplication objApp)
{
objApp.AuthorizeRequest 
+= new
EventHandler(
this.CustomDBAuthorization);
}
public void Dispose()
{
}
private void CustomDBAuthorization(object sender,EventArgs
evtArgs)
{
HttpApplication objApplication 
=(HttpApplication)sender;
string sAppPath,sUsrName;
bool bAuthorized = false;
sAppPath
=objApplication.Request.FilePath.ToString();
sUsrName
=objApplication.Request.Params[0].ToString();
bAuthorized 
= DBAuthorize(sUsrName,sAppPath);
if(bAuthorized)
{
objApplication.Context.Response.Write(
"Authorized User");
}
else
{
objApplication.Context.Response.Write(
"UnAuthorized User");
objApplication.Response.End();
}
}
private string DBAuthorize(string sUsrName,string sAppPath)
{
SqlConnection sqlConn
=new SqlConnection()
sqlConn.ConnectionString
="user id=sa;Pwd=password;Data Source=localhost;Initial

Catalog
=Northwind");
SqlCommand sqlCmd=new SqlCommand();
SqlParameter sqlParam
=new SqlParameter();
sqlCmd.Connection
=sqlConn;
sqlConn.Open();
sqlCmd.CommandType
=CommandType.StoredProcedure;
sqlCmd.CommandText
="sAuthorizeURL";
sqlParam 
= sqlCmd.Parameters.Add ("@UserName",SqlDbType.VarChar,30);
sqlParam 
= sqlCmd.Parameters.Add("@URLPath",SqlDbType.VarChar,40);
sqlCmd.Parameters[
"@UserName"].Value=sUsrName;
sqlCmd.Parameters[
"@URLPath"].Value=sAppPath;
string res=sqlCmd.ExecuteScalar().ToString();
if(res == "Authorized")
{
return true;
}
else
{
return false;
}

}
}


转自:http://www.cnblogs.com/jecray/archive/2007/05/27/761444.html
感谢原作者:jecray  !!

转载于:https://www.cnblogs.com/tuyile006/archive/2007/09/10/888147.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图谱问答-句子向量模型部署项目总结(未完)

内容来自七月算法nlp课程。 文章目录1 句子向量1.1 bert句子向量表示相似度效果不好1.2 sentence-bert1 句子向量 句子向量是用于实体消岐的。可以使用Elmo&#xff0c;也可以使用bert。这里介绍用bert生成句子向量。 1.1 bert句子向量表示相似度效果不好 Bert中最常用的句向…

Linux du

linux中du与df的区别和联系 1&#xff0c;两者区别 du&#xff0c;disk usage,是通过搜索文件来计算每个文件的大小然后累加&#xff0c;du能看到的文件只是一些当前存在 的&#xff0c;没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。df&#xff0c;di…

DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果

Asp.net提供了三个功能强大的列表控件&#xff1a;DataGrid、DataList和Repeater控件&#xff0c;但其中只有DataGrid控件提供分页功能。相对DataGrid&#xff0c;DataList和Repeater控件具有更高的样式自定义性&#xff0c;所以很多时候我们喜欢使用DataList或Repeater控件来显…

基于知识图谱的问答系统实践

文章目录1 项目目标1.1 数据情况1.2 问题分类2 技术方案2.1 数据准备2.2 数据入库2.3 查询部分3 模型3.1 问题分类3.1.1 数据准备3.1.2 分类模型TextCNN3.2 不同类型的问题处理逻辑4 总结与优化1 项目目标 1.1 数据情况 基于知识图谱的问答系统&#xff0c;简称为KBQA&#x…

java常用的语句

//判断一个长的字符串中是否包含某一个短的字符串 if (str1.indexOf(str2) ! -1) {return true;//存在 }else {return false; } /*** 消息模板关键字替换* param template 消息内容* param map 替换key-value* return*/ public static String replaceTemplate(String template…

spring mvc学习(48):java判断系统是linux还是windows系统

java判断系统是linux还是windows系统 判断一个系统是windows还是linux? import org.junit.jupiter.api.Test;/*** program: utilsdemo* description: 判断运行的系统是windows还是linux* author: zhangyu* create: 2019-08-12 10:07*/public class JudgeSystem {/*** descript…

二分搜索模板

翻了一下自己的博客。记录了花花酱的二分搜索模板、王争的二分搜索模板。 花花酱的文章中提到&#xff1a;不要试图去找一个正确答案。试图去找一个分割点m&#xff0c;使得x>m&#xff0c;g(x)>0为true。这个始终get不到。 王争的二分模板思路是比较简单的&#xff0c;就…

spring mvc学习(49):返回json数据

json包下载 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">…

【推荐】“水果”公司的复兴 (乔布斯和苹果公司)---Google黑板报

从google黑板报上发现的很好的介绍乔布斯和苹果的文章&#xff1a;“水果”公司的复兴发表者&#xff1a;Google&#xff08;谷歌&#xff09;研究员 吴军1.传奇小子2.迷失方向3.再创辉煌大家可以看一下&#xff0c;感受史蒂夫乔布斯的传奇。转载于:https://www.cnblogs.com/co…

log4j 日志配置

Log4j教程 - Log4j安装 Log4j API包是根据Apache软件许可证分发的。 最新的log4j版本&#xff0c;包括全源代码&#xff0c;类文件和文档可以在http://logging.apache.org/log4j/找到。 我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。 支持库 我们可以使用log4…

理解transformer

文章目录1 注意力机制2 自注意力机制3 自注意力机制加强版4 Transformer的结构4.1 input4.2 encoder4.2.1 Multi-head attention4.2.2 残差链接4.2.3 层正则化layer norm4.2.4 前馈神经网络 feed forward network4.3 decoder4.3.1 输入4.3.1 Masked Multi-head attention4.3.2 …

第一百三十七期:一个简单的小案例带你理解MySQL中的事务

事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。 作者&#xff1a;Java的架构师技术栈 事务又叫做TCL&#xff0c;全称是transaction control language&#xff0c;意思是事务控制语言。这篇文章还是属于我的mysql基础文章&…

解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet

软件&#xff1a; 1、流媒体服务器EasyDarwin-windows-8.1.0-1901141151 2、ffmpeg-20181001-dcbd89e-win64-static 3、直播源&#xff1a;rtsp://192.168.1.168/0 4、流媒体服务器EasyDarwin地址rtsp://192.168.1.28/3 问题现象 [rtsp 0000000000122bc0] max delay reached. …

第一百三十八期:37 个MySQL数据库小知识,为面试做准备

无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术是一个必备加薪神器&#xff0c;那么&#xff0c;一直说学习数据库、学MySQL&#xff0c;到底是要学习它的哪些东西呢? 作者&#xff1a;芒果教你学编程 无论是运维、开发、测试&#xff0c;还是架构师&…

NLG模块实现(未完成)

NLG(Natural Language Generation)&#xff0c;计算机将结构化数据转换为文本并以人类语言编写信息。 使用GPT框架完成NLG任务。GPT模型是预训练模型&#xff0c; 采用两阶段过程&#xff0c;第一个阶段是利用语言模型进行预训练&#xff08;无监督形式&#xff09;&#xff0c…

android adb shell常用命令(四)

一、简介 adb命令是adb这个程序自带的一些命令&#xff0c;而adb shell则是调用的Android系统中的命令&#xff0c;这些andorid特有的命令都放在来Android设备的system/bin目录下。 二、常用命令介绍 pm Pacage Manager&#xff0c;可以获取到一些安装在Android设备上的应用信息…

第一百三十九期:11月数据库排行:排名前三数据库分数暴跌

DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;与上期数据相比&#xff0c;这期排行榜最大的亮点就是排名前三数据库那引人注目的“红色”分数。 作者&#xff1a;局长 DB-Engines 数据库流行度排行榜 11 月更新已发布&#xff0c;排名前二十如下&#xff1a; ▲…

对话系统之NLU总结报告

文章目录1 项目介绍1.1 背景知识介绍1.2 数据集介绍1.3 评价指标2 技术方案梳理2.1 模型目标2.2 模型介绍2.3 模型实现2.3.1 数据处理2.3.2 构建dataset2.3.3 模型定义2.3.4 训练相关参数2.3.5 训练结果3 项目总结1 项目介绍 1.1 背景知识介绍 对话系统按领域分类&#xff0c…

Windows SDK编程之一 窗口示例程序

/*Win32应用程序框架主要由"初始化窗口类"&#xff0c;"窗口注册类"&#xff0c;"窗口的创建"以"窗口消息函数"等组成*/ #include "stdafx.h" LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明 /* Win…

Ubuntu下用apache+perl搭建最简单的聊天室

最近学习了下perl&#xff0c;尝试自己搭建一个聊天室&#xff0c;现已搭建成功&#xff0c;但设计方法很简陋&#xff0c;误见笑&#xff0c;收获在于对apache、html、perl都有了些许认识&#xff0c;后面打算学习LAMP&#xff08;LinuxApacheMySQLPHP&#xff09;搭建一个在线…