Aop检查Session,全局过滤器和No全局过滤器
AOP No session 检查 全局 过滤器
2023-09-11 14:20:28 时间
全局过滤器:
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"; } } }); });
相关文章
- 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式
- Hystrix:普通Javaweb结合AOP使用
- Maven发布封装到中央仓库时候报错:no default secret key: No secret key
- springboot自定义jdbc操作库+基于注解切点AOP
- spring aop拦截指定方法和自定义注解
- .Net中的AOP系列之《将AOP作为架构工具》
- AOP的实现机制
- Spring5参考指南:基于Schema的AOP
- Srping AOP的学习(三):AOP的执行过程
- spring aop 环绕通知around和其他通知的区别
- Spring 在XML中声明切面/AOP
- CentOS编译安装emacs 25.3 错误 make: *** No targets specified and no makefile found. Stop.
- AOP前世与今生,aspect