ASP.NET MVC判断基于Cookie的Session过期

当我们第一次请求访问时,可以看到Response的Set-Cookie里添加了ASP.NET_SessionId的值,以后再访问时可以看到Resquest里的Cookie已经包含这个Key.

image image

Session的IsNewSession可以判断这次请求是否第一次访问, 所以如果是第一次访问而且cookie里包含ASP.NET_SessionId,那么可以判断Session已经过期

因此我们可以写一个如下的一个Filter加在需要判断过期的Action上,当然如果所有Action都需要处理我们可以让所有的Controller集成一个BaseController,在BaseController的OnActionExecuting方法里做, 请参考如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public  class  SessionTimeOutFilterAttribute : ActionFilterAttribute
{
    public  override  void  OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContextBase ctx = filterContext.HttpContext;
        if  (ctx.Session != null )
        {
            if  (ctx.Session.IsNewSession)
            {
                string  sessionCookie = ctx.Request.Headers[ "Cookie" ];
                if  (( null  != sessionCookie) && (sessionCookie.IndexOf( "ASP.NET_SessionId" ) >= 0))
                {
                    ctx.Response.Redirect( "~/Search/Index" );
                }
            }
        }
        base .OnActionExecuting(filterContext);
    }
}
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2009/08/06/1540525.html如需转载请自行联系原作者

王德水
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值