现在的位置: 首页 > 综合 > 正文

HttpModule用户的验证

2013年07月21日 ⁄ 综合 ⁄ 共 1335字 ⁄ 字号 评论关闭

HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之 路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获 的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。

1.首先你要实现IHttpModule接口这个接口只有两个方法,一个是Init方法一个Dispose方法.

2.在Init方法里边注册事件:

1 public void Init(HttpApplication context)
2  {
3       context.AcquireRequestState+=new EventHandler(OnRequest);
4            
5  }

View Code

3.写注册事件的方法:

 1 public void OnRequest(object source, EventArgs e)
 2         {
 3 
 4             HttpApplication application = source as HttpApplication;//得到Application
 5             HttpContext context = application.Context;//得到请求上下文.
 6             Uri url = context.Request.Url;//得到当前请求的URL
 7              
 8             //请求Admin目录下的文件时,需要进行身份验证,只有管理员才能访问.
 9             if (url.AbsolutePath.ToLower().StartsWith("/admin"))
10             {
11                 //adminlogin.aspx和logout.aspx不需要身份验证
12                 if (url.AbsolutePath.ToLower().EndsWith("adminlogin.aspx"))
13                 {
14                     return;
15                 }
16                 if (url.AbsolutePath.ToLower().EndsWith("loginout.aspx"))
17                 {
18                     return;
19                 }
20                 if (HttpContext.Current.Session["Name"] == null)
21                 {
22                     HttpContext.Current.Response.Redirect("adminlogin.aspx");
23                 }
24 
25 
26             }
27         }

View Code

4.配置web.config:

1 <httpModules>
2       <add name="CheckAdminModule" type="Web.Common.CheckAdminModule"/>
3     </httpModules>

View Code

这个方法很简单但是很使用。主要原理是在HttpModule里边进行了admin文件的过滤,在http访问过来的时候用HttpModule进行对session的验证如果session存在则通过,如果不存在侧直接跳转到登录页面。

程序中实现的方法有很多中。多总结一些对于提升自己的能力有很大的帮助。

抱歉!评论已关闭.