MVC session過期如何處理跳轉


以前我們總是會寫一個基類也叫父類來判斷session是否已過期然后跳轉到指定的錯誤頁面或者登陸界面,然后讓所有的頁面都繼承這個基類,但是當我們應用到MVC項目中時,發現該方法並不會起作用。這時我們可以這么做:

1.建一個類,如下

using System;
using System.Web.Mvc;
using System.Web.Routing;

namespace CheckInManagerSystem.Controllers
{
    public class CheckLogin : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.HttpContext.Session != null)
            {
                if (filterContext.HttpContext.Session.IsNewSession)
                {
                    var sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"];
                    if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId", StringComparison.OrdinalIgnoreCase) >= 0))
                    {
                        filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Account", Action = "LogOff" }));//這里是跳轉到Account下的LogOff,自己定義
                    }
                }
            }
        }
    }
}

2.在每個用到session的Action前增加這個[CheckLogin()],如

[CheckLogin()]
public ActionResult Details(int userid)
{
  ViewDataLoad();
    return View(_context.GetUserById(userid));
}

  這樣就OK啦!不會再因為session過期而報紅頁面了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM