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";
                }
               
            }
        });
    });
  • 相关阅读:
    使用visio 2007对现有的数据库进行反向工程
    GOOGLE地图坐标拾取方法、GOOGLE地图获取坐标方法
    Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
    WCF把书读薄(4)——事务编程与可靠会话
    WCF把书读薄(3)——数据契约、消息契约与错误契约
    WCF把书读薄(2)——消息交换、服务实例、会话与并发
    Backbone.js developer 武汉 年薪8w-10w
    Java面试
    从pb文件中恢复计算图并在tensorboard中展示
    Ubuntu下解决u盘变成只读模式
  • 原文地址:https://www.cnblogs.com/gaocong/p/5542892.html
Copyright © 2011-2022 走看看