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;

    文章标签: 
  • 相关阅读:
    第一节:SpringMVC概述
    SpringMVC【目录】
    Windows 系统快速查看文件MD5
    (error) ERR wrong number of arguments for 'hmset' command
    hive使用遇到的问题 cannot recognize input
    Overleaf支持的部分中文字体预览
    Understanding and Improving Fast Adversarial Training
    Django2实战示例 第十三章 上线
    Django2实战示例 第十二章 创建API
    Django2实战示例 第十一章 渲染和缓存课程内容
  • 原文地址:https://www.cnblogs.com/sjqq/p/9427695.html
Copyright © 2011-2022 走看看