步步为营-81-HttpModule(再谈Session)

说明:session用于记录数据信息并存放在服务器内存中,但是存在一些问题.例如当使用服务器集群是会出现session丢失等情况.虽然微软提供了一些解决方案(Session进程外存储,或者存到数据库中),但是效果不尽人意.常用的还是Memcache或者Redis等分布式缓存

步步为营-76-用户登录(Session+Cookie)的1.4中通过封装CheckSession来实现身份校验(在请求管道的第11和第12事件中间),其实还可以通过HttpModule来实现(请求管道的第9个事件,AcquireRequestState),

1.1 创建实现IHttpModule接口的类

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace NewsCommon
{
    //01 定义SessionHttpModule,实现IHttpModule接口
    public class SessionHttpModule:IHttpModule
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
           
            context.AcquireRequestState += context_AcquireRequestState;
        }

       public void context_AcquireRequestState(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
           //获取当前的httpcontext
            HttpContext context = application.Context;
           //获取用户请求的URL地址
            string url = context.Request.Url.ToString();
            if (url.Contains("后台页面"))
            {
                if (context.Session["userInfo"] == null)
                {
                    context.Response.Redirect("/Login.aspx");
                }
            }
        }
    }
}
SessionHttpModule
复制代码

1.2 配置WebConfig文件

复制代码
  <!--配置HttpModule -->
  <system.webServer>
    <modules>
      <add name="SessionHttpModule" type="NewsCommon.SessionHttpModule"/>
    </modules>
  </system.webServer>
webconfig
复制代码

posted @   逍遥小天狼  阅读(316)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示