zoukankan      html  css  js  c++  java
  • Aop检查Session,全局过滤器和No全局过滤器

    全局过滤器:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace UpdateService.Filter
    {
        public class AccessControl : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                bool flag = false;
                List<FilterAttribute> list = filterContext.ActionDescriptor.GetFilterAttributes(false).ToList();
                list.AddRange(filterContext.ActionDescriptor.ControllerDescriptor.GetFilterAttributes(false).ToList());
                foreach (var item in list)
                {
                    bool b = item.Match(new AccessControlNoFilter());
                    if (b == true)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag == true)
                {
                    base.OnActionExecuting(filterContext);
                }
                else
                {
    
                    HttpContextBase context = filterContext.HttpContext;
                    HttpResponseBase response = filterContext.HttpContext.Response;
                    HttpRequestBase request = filterContext.HttpContext.Request;
                    if (context.Session["User"] == null)
                    {
                        if (request.IsAjaxRequest())
                        {
    
    
                            HttpUnauthorizedResult httpStatus = new HttpUnauthorizedResult("Session Timeout");
                            filterContext.Result = httpStatus;
                            //禁用web.config中的form认证
                            //<!--<authentication mode="Forms">
                            //<forms loginUrl="~/Account/Login" timeout="2880" />
                            //</authentication>-->
                        }
                        else
                        {
                            ContentResult con = new ContentResult();
                            con.Content = "<script>alert('当前会话已超时!');location='/Home/Login';</script>";
                            filterContext.Result = con;
                        }
                    }
                    base.OnActionExecuting(filterContext);
                }
    
            }
        }
    }
    

     NO全局过滤器:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace UpdateService.Filter
    {
        public class AccessControlNoFilter : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);
            }
        }
    }
    

     FilterConfig.cs

    public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
               //全局Session检查
                filters.Add(new AccessControl());
            }
        }
    

     Jquery:

    $(function () {
        // 设置jQuery Ajax全局的参数  
        $.ajaxSetup({
            complete: function (jqXHR, textStatus, errorThrown) {
    if (jqXHR.statusText == "Session Timeout") {
                    alert('当前会话已超时!');
                    location = "/Home/Login";
                }
               
            }
        });
    });
  • 相关阅读:
    Java的参数传递是值传递还是引用传递
    10张图带你深入理解Docker容器和镜像
    Java 如何有效地避免OOM:善于利用软引用和弱引用
    事务与一致性:刚性or柔性
    Java 面试题史上最强整理
    三张图秒懂Redis集群设计原理
    iOS开发笔记系列-基础4(变量与数据类型)
    iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
    iOS开发笔记系列-基础2(类)
    iOS开发笔记系列-基础1(数据类型与表达式)
  • 原文地址:https://www.cnblogs.com/gaocong/p/5542892.html
Copyright © 2011-2022 走看看