码迷,mamicode.com
首页 > Web开发 > 详细

MVC过滤器处理Session过期

时间:2018-04-04 21:21:30      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:hand   text   http   des   gpo   result   tom   erro   art   

一、自定义一个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;

 

MVC过滤器处理Session过期

标签:hand   text   http   des   gpo   result   tom   erro   art   

原文地址:https://www.cnblogs.com/hnsongbiao/p/8718328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!