.NET6自定义WebAPI过滤器

 更新时间:2021年12月24日 08:47:11   作者:PrintY  
这篇文章介绍了.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

到此这篇关于.NET6自定义WebAPI过滤器的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • asp.net快速连接access

    asp.net快速连接access

    网上有很多人在问asp.net连接access的问题,作为一个程序员,我觉得非常有必要分享一下我是怎么快速,简单连接access数据库的。本经验采用HTML代码结合JS模式,直接写在网页中,非常适合学习新手。
    2015-09-09
  • 把程序集安装到全局程序集缓存中的步骤

    把程序集安装到全局程序集缓存中的步骤

    最近两天在看网络编程中制作简单的http服务器,其中用到把程序集安装到全局程序集缓存中,自己尝试了一下,记录一下:(首先,对共享程序集安装计算机管理员权限)
    2008-11-11
  • C# 根据ip获取城市等相关信息

    C# 根据ip获取城市等相关信息

    本文将实现:得到真实IP以及所在地详细信息/通过IP得到IP所在地省市/获取HTML源码信息,感兴趣的朋友不妨了解一下,或许对你巩固所学知识有所帮助
    2013-01-01
  • C#中实现伪静态页面两种方式介绍

    C#中实现伪静态页面两种方式介绍

    伪静态技术的诞生,带动了于搜索引擎友好C#中实现伪静态页面有两种方式,本文将一一详解,感兴趣的朋友可以参考下,希望本文对你学习伪静态有所帮助
    2013-01-01
  • ASP.NET服务器控件开发(1)封装html

    ASP.NET服务器控件开发(1)封装html

    在我们的项目开发中,由于ASP.NET的服务器控件功能有限,所以我们经常会自己定义特定的服务器控件,来满足开发中特定的业务要求。可见知道如何开发ASP.NET服务器控件是非常有必要的
    2015-12-12
  • asp.net页面防止重复提交示例分享

    asp.net页面防止重复提交示例分享

    asp.net页面button按钮防止重复提交的方法,大家参考使用吧
    2013-12-12
  • asp.net String.format中大括号的加入方法

    asp.net String.format中大括号的加入方法

    String.format中大括号的加入方法,需要的朋友可以参考下。
    2010-05-05
  • asp.net 大文件上传控件

    asp.net 大文件上传控件

    这段时间写了个asp.net 上传大文件控件。经过测试,在ie中可显示进度条。特此共享,望广大网友多提意见。
    2008-12-12
  • Asp.net core中RedisMQ的简单应用实现

    Asp.net core中RedisMQ的简单应用实现

    这篇文章主要介绍了Asp.net core中RedisMQ的简单应用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论