ASP.NET MVC判斷基於Cookie的Session到期

來源:互聯網
上載者:User

當我們第一次請求訪問時,可以看到Response的Set-Cookie裡添加了ASP.NET_SessionId的值,以後再訪問時可以看到Resquest裡的Cookie已經包含這個Key.

 

Session的IsNewSession可以判斷這次請求是否第一次訪問, 所以如果是第一次訪問而且cookie裡包含ASP.NET_SessionId,那麼可以判斷Session已經到期

因此我們可以寫一個如下的一個Filter加在需要判斷到期的Action上,當然如果所有Action都需要處理我們可以讓所有的Controller整合一個BaseController,在BaseController的OnActionExecuting方法裡做, 請參考如下代碼

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);   }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.