MVC5中拦截器跳转登录页面

    public class ExceptionFillters : FilterAttribute, IExceptionFilter
    {
        public void OnException(ExceptionContext filterContext)
        {
            throw new System.NotImplementedException();
        }
    }
    public class ActionFillters : FilterAttribute, IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (filterContext.RequestContext.HttpContext.Session == null) return;
            var token = filterContext.RequestContext.HttpContext.Session["userId"];
            if (token == null)
            {
                filterContext.RequestContext.HttpContext.RedirectLocal("/Role/LoginHome");
            }
            //执行action后执行这个方法 比如做操作日志
        }

        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //执行action前执行这个方法,比如做身份验证
        }
    }
    public class ResultFillters : FilterAttribute, IResultFilter
    {
        public void OnResultExecuted(ResultExecutedContext filterContext)
        {
            //执行完action后跳转后执行
        }

        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            //执行完action后跳转前执行
        }
    }

实现这几个方法后

在控制器中的视图方法上加入

        [ResultFillters]
        [ActionFillters]
        [ExceptionFillters]
        public ActionResult Index(int currentPageIndex = 1)
        {
            return View();
        }
        

这就实现了拦截,未登录的用户,session为null是跳到登录页面

原文地址:https://www.cnblogs.com/jooucks/p/7363305.html