分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

MVC过滤器处理Session过期

发布时间:2023-09-06 02:08责任编辑:彭小芳关键词:MVC

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

原文地址:https://www.cnblogs.com/sjqq/p/9427695.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved