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";
                }
               
            }
        });
    });
  • 相关阅读:
    驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
    模块化Java:声明式模块化
    模块化Java:静态模块化
    用 Apache Tika 理解信息内容
    Refactoring: Encapsulate Collection
    新型的几乎万能的数据结构CDO
    CDO数据结构基础(1) 转载
    模块化Java简介(转载infoq)
    模块化Java:动态模块化
    责任链模式(C++)
  • 原文地址:https://www.cnblogs.com/gaocong/p/5542892.html
Copyright © 2011-2022 走看看