zoukankan      html  css  js  c++  java
  • .NET6 WebAPI 自定义过滤器

    1、上代码

    /// <summary>
        /// API白名单过滤器
        /// </summary>
        public class APIFilter : ActionFilterAttribute
        {
            /// <summary>
            /// 控制器中加了该属性的方法中代码执行之前该方法。
            /// 所以可以用做权限校验。
            /// </summary>
            /// <param name="context"></param>
            public override void OnActionExecuting(ActionExecutingContext context)
            {
                var vistorIp = context.HttpContext.Connection.RemoteIpAddress.ToString_();
                var whiteIp = AppsettingHelper.Get("WhiteIP");
                if (!string.IsNullOrEmpty(whiteIp))
                {
                    List<string> whiteIpList = whiteIp.Split(',').ToList();
                    if (!whiteIpList.Contains("*") && !whiteIpList.Contains(vistorIp))
                    {
                        context.HttpContext.Response.StatusCode = 401;
                        context.Result = new JsonResult(new { code = 401, msg = "非法IP" });
                    }
                }
                base.OnActionExecuting(context);
            }
            /// <summary>
            /// 控制器中加了该属性的方法执行完成后才会来执行该方法。
            /// </summary>
            /// <param name="context"></param>
            public override void OnActionExecuted(ActionExecutedContext context)
            {
                base.OnActionExecuted(context);
            }
            /// <summary>
            /// 控制器中加了该属性的方法执行完成后才会来执行该方法。比OnActionExecuted()方法还晚执行。
            /// </summary>
            /// <param name="context"></param>
            /// <param name="next"></param>
            /// <returns></returns>
            public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
            {
                return base.OnResultExecutionAsync(context, next);
            }
        }

    2、使用

        [Route("api/[controller]/[action]")]
        [ApiController]
        [APIFilter]
        public class YangController : BaseController
  • 相关阅读:
    02 createJS中关于图片优化的问题(推荐一个图片优化的网站)
    01 createJS代码作用域
    文件读取一些payload
    SQL注入笔记-updatexml与extractvalue
    四位数六位数字典生成
    XShell上传文件到Linux服务器上
    centos彻底删除文件夹创建文件
    2020.6.18 时间记录 总学习5.15
    2020.6.14 时间记录
    五种IT职位的介绍
  • 原文地址:https://www.cnblogs.com/PrintY/p/15666986.html
Copyright © 2011-2022 走看看