博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC过滤器处理Session过期
阅读量:4355 次
发布时间:2019-06-07

本文共 2278 字,大约阅读时间需要 7 分钟。

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

 

转载于:https://www.cnblogs.com/hnsongbiao/p/8718328.html

你可能感兴趣的文章
排序笔记
查看>>
下载360doc.com里的文章
查看>>
【转】globk和glorg中使用的apr文件
查看>>
导航,头部,CSS基础
查看>>
PostMessage 解析
查看>>
Java语法基础(一)
查看>>
as3 sort
查看>>
hdu 2680 Choose the best route Dijkstra 虚拟点
查看>>
26. Remove Duplicates from Sorted Array java solutions
查看>>
[bzoj1185] [HNOI2007]最小矩形覆盖
查看>>
全景图制作详解
查看>>
React之todo-list
查看>>
cocoapods降级版本
查看>>
MYSQL复习笔记4-基本SQL语句
查看>>
C#&java重学笔记(函数)
查看>>
14软件G2班
查看>>
bzoj 1977 [BeiJing2010组队]次小生成树 Tree
查看>>
bzoj 2119 股市的预测——枚举长度的关键点+后缀数组
查看>>
maven:新建的maven工程需要添加一下插件
查看>>
改变和恢复view的方向
查看>>