ASP.NET的HTTP模块和处理程序之模块实现(1)

作者:控件中国网   出处:互联网   2015-07-17 22:50:49   阅读:3

为了实现扩充或扩展Web服务器的功能,ASP.NET提供了HttpHandler(HTTP处理程序)和HttpModule(HTTP模块),这里,笔者将带各位深入了解这些组件的详细信息。这篇文章,笔者将向大家实现一个提供安全服务的HTTP模块。


 

AD: Dynamic .NET TWAIN是一款用于.NET桌面应程序下的扫描控件,可以从任何兼容TWAIN的驱动获取图像,市面上少有的分发完全免费的扫描控件,控件中国网:023-6787 0900

 

 

实现一个提供安全服务的HTTP模块


 

现在们实现一个HTTP模块,它为们的Web应用程序提供安全服务。该HTTP模块基本上是提供一种定制的身份认证服务。它将接收HTTP请求中的身份凭证,并确定该凭证是否有效。如果有效,与用户相关的角色是什么?通过User.Identity对象,它把这些角色与访问们的Web应用程序页面的用户的标识关联起来。


 

下面是该HTTP模块的代码:

using System;  using System.Web;  using System.Security.Principal;  namespace SecurityModules  {   /// Class1的总体描述。   public class CustomAuthenticationModule : IHttpModule   {  public CustomAuthenticationModule()  {  }  public void Init(HttpApplication r_objApplication)  {   // 向Application 对象注册事件处理程序。   r_objApplication.AuthenticateRequest +=   new EventHandler(this.AuthenticateRequest) ;  }  public void Dispose()  {   // 此处空出,因为们不需要做什么操作。  }  private void AuthenticateRequest(object r_objSender,EventArgs r_objEventArgs)  {   // 鉴别用户的凭证,并找出用户角色。。   1. HttpApplication objApp = (HttpApplication) r_objSender ;   2. HttpContext objContext = (HttpContext) objApp.Context ;   3. if ( (objApp.Request["userid"] == null) ||   4.  (objApp.Request["password"] == null) )   5.  {   6. objContext.Response.Write("<H1>Credentials not provided</H1>") ;   7. objContext.Response.End() ;   8.  }   9. string userid = "" ;   10. userid = objApp.Request["userid"].ToString() ;   11. string password = "" ;   12. password = objApp.Request["password"].ToString() ;     13. string[] strRoles ;   14. strRoles = AuthenticateAndGetRoles(userid, password) ;   15. if ((strRoles == null) || (strRoles.GetLength(0) == 0))   16. {   17.  objContext.Response.Write("<H1>We are sorry but we could not  find this user id and password in our database</H1>") ;   18.  objApp.CompleteRequest() ;   19. }   20. GenericIdentity objIdentity = new GenericIdentity(userid,  "CustomAuthentication") ;   21. objContext.User = new GenericPrincipal(objIdentity, strRoles) ;  }  private string[] AuthenticateAndGetRoles(string r_strUserID,string r_strPassword)  {   string[] strRoles = null ;   if ((r_strUserID.Equals("Steve"))   (r_strPassword.Equals("15seconds")))   {  strRoles = new String[1] ;  strRoles[0] = "Administrator" ;   }   else if ((r_strUserID.Equals("Mansoor"))   (r_strPassword.Equals("mas")))   {  strRoles = new string[1] ;  strRoles[0] = "User" ;    }   return strRoles ;  }   }  } 


 

 

Dynamic .NET TWAIN是一款用于.NET桌面应程序下的扫描控件,可以从任何兼容TWAIN的驱动获取图像,市面上少有的分发完全免费的扫描控件,控件中国网:023-6787 0900

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat