【Dnc.Api.Throttle】适用于.Net Core WebApi接口限流框架

时间:2018-08-07 10:08:44   收藏:0   阅读:195

Dnc.Api.Throttle

技术分享图片  技术分享图片

适用于Dot Net Core的WebApi接口限流框架

使用Dnc.Api.Throttle可以使您轻松实现WebApi接口的限流管理。Dnc.Api.Throttle支持IP、用户身份、Request Header、Request QueryString等多种限流策略,支持黑名单和白名单功能,支持全局拦截和单独Api拦截。

Dnc.Api.Throttle暂时只支持Redis作为缓存和存储库,后续会进行扩展。

开始使用

 

更多Valve范例

全局限流配置

以上都是对单个Api进行限流管理的,如果需要对全局进行限流管理,可在`Startup.cs`中进行如下配置:
       //Api限流
        services.AddApiThrottle(options => {
            ...
            options.Global.AddValves(new BlackListValve
            {
                Policy = Policy.Ip,
                Priority = 99
            }, new WhiteListValve
            {
                Policy = Policy.UserIdentity,
                Priority = 88
            },
            new BlackListValve
            {
                Policy = Policy.Header,
                PolicyKey = "throttle"
            }, new RateValve
            {
                Policy = Policy.Ip,
                Limit = 5,
                Duration = 10,
                WhenNull = WhenNull.Pass
            });
            ...
        });
以上代表给全局添加了4个Valve进行拦截,如果被拦截,则不进行后续操作。

白名单检查通过时,代表全局拦截通过,不进行后续全局Valve检查(后续单独Api的检查还会进行)相同识别策略(Policy+PolicyKey)的Valve只能添加一个,重复不会添加。

全局限流拦截在Middlewarez中进行,单独Api限流拦截在IAsyncActionFilter中进行,当然也支持Razor Page,在IAsyncPageFilterz中进行限流。

其他自定义配置项

原文:https://www.cnblogs.com/kulend/p/9435095.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!