zoukankan      html  css  js  c++  java
  • MVC过滤器处理Session过期

    一、自定义一个Action过滤器

     public class CheckSession: ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                object[] attrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(NoFilter), true);
                if (attrs.Length == 1){}
                else { 
                    if (filterContext.HttpContext.Session != null)
                    {
                        if (filterContext.HttpContext.Session.IsNewSession)
                        {
                            var loginUser = filterContext.HttpContext.Session["User"];


                            if (loginUser == null)
                            {
                                if (!filterContext.HttpContext.Request.IsAjaxRequest())
                                {
                                    filterContext.Result = new RedirectResult("/GY_User/LoginIndex");
                                }
                                else
                                {
                                    filterContext.Result = new JsonResult
                                    {
                                        Data = new
                                        {
                                            Success = false,
                                            Message = string.Empty,
                                            Redirect = "/GY_User/LoginIndex"
                                        }
                                    };
                                }
                            }
                        }
                    }
                }
                // base.OnActionExecuting(filterContext);
            }
        }

       //不想使用全局过滤器可使用此标签
        public class NoFilter:Attribute
        {
            public NoFilter() { }
        }

    二、注册全局过滤器

    在FilterConfig中添加

     public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
               // filters.Add(new HandleErrorAttribute());
                filters.Add(new CheckSession());
            }

    在Global.asax中添加

     protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            }

    三、在不想使用全局过滤器的Action上添加[NoFilter]标签

    四、设置Session过期时间

    Session["User"] = jsonData.data;
     Session.Timeout = 3;

    文章标签: 
  • 相关阅读:
    信息安全系统设计基础第二周学习总结(20135213)
    《深入理解计算机系统》第一节课课堂笔记(20135213)
    (20135213)信息安全系统设计基础第一周学习总结(共12课)课程(6~12)
    (20135213)信息安全系统设计基础第一周学习总结(共12课)课程(1~5)
    实验五 — — Java网络编程及安全
    20135220谈愈敏--信息安全系统设计基础期中总结
    20135220谈愈敏-第三章家庭作业
    20135220谈愈敏--信息安全系统设计基础第六周学习总结
    20135220谈愈敏-第二章家庭作业
    20135220谈愈敏--信息安全系统设计基础第五周学习总结
  • 原文地址:https://www.cnblogs.com/sjqq/p/9427695.html
Copyright © 2011-2022 走看看