ASP Session校验是否登录,请求管道事件注册函数(HttpModule)

Global.asax文件,全局应用程序类: Application_Start()方法----创建HttpApplication对象,循环遍历所有IHttpModule,将所有注册函数注册到管道事件中(只是注册, 并未调用执行)。 ----进入 事件 管道,依次触发管道中的所有事件,并依次调用相应的 事件 注册 函数。----Global.asax文件,全局应用程序类:类中的其他方法。

Web.config:

<system.web>
  。。。。。 
</system.web>

<!--关于HttpModule的配置-->
<system.webServer>
  <modules>
    <add name="ValidateSessionHttpModule" type="XXX.Common.ValidateSessionHttpModule"/>
  </modules>
</system.webServer>
XXX.Common.ValidateSessionHttpModule.cs 类(校验Session是否登录):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace XXX.Common
{
   public class ValidateSessionHttpModule:IHttpModule  //必须实现该接口
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
           context.AcquireRequestState+=context_AcquireRequestState;  //(委托)AcquireRequestState是请求管道中第9个事件,为该事件注册一个函数。
        }
        public void context_AcquireRequestState(object sender, EventArgs e)  //为委托绑定(注册)的函数
        {
            HttpApplication application = sender as HttpApplication;
            HttpContext context=application.Context;//获取当前的HttpContext
           string url= context.Request.Url.ToString();//获取用户请求的URL地址。
           if (url.Contains("Admin"))
           {
               if (context.Session["userInfo"] == null)
               {
                   context.Response.Redirect("/Login.aspx");  // "/"表示网站根目录,不能少,否则会请求Admin/Lagin.aspx ,这样就会无限跳转。
               }
           }
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值