首页 > 其他分享 >.Net Core3.1 API访问进行频次限制

.Net Core3.1 API访问进行频次限制

时间:2023-04-03 16:59:40浏览次数:45  
标签:限制 Configure 中间件 services API Core3.1 AddSingleton Net

  1. 首先,安装AspNetCore.RateLimit NuGet 包。您可以通过NuGet包管理器控制台或Visual Studio的NuGet包管理器来执行此操作。安装后,您将在项目中看到一个名为AspNetCoreRateLimit的文件夹,其中包含中间件的配置类。

  2. 接下来,您需要在 Startup.cs 文件中注册中间件。您可以在ConfigureServices方法中使用以下代码来注册中间件:

    services.AddMemoryCache();
    services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
    services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));
    services.AddHttpContextAccessor();
    services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
    services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
    services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();

    上述代码将注册并配置所需的服务和选项。请注意,此示例将使用内存缓存来存储速率限制数据。如果需要更持久的存储解决方案,请使用IRateLimitCounterStoreIIpPolicyStore接口的实现。

  3. 接下来,您需要在Configure方法中使用以下代码将中间件添加到管道中:

    app.UseIpRateLimiting();

    以上代码将添加速率限制中间件到ASP.NET Core应用程序的管道中。现在,您需要配置速率限制选项和策略。

  4. 最后,您需要在 appsettings.json 文件中配置速率限制选项和策略。例如:
    {
      "IpRateLimiting": {
        "EnableEndpointRateLimiting": true,
        "StackBlockedRequests": false,
        "RealIPHeader": "X-Real-IP",
        "ClientIdHeader": "X-ClientId",
        "HttpStatusCode": 429,
        "GeneralRules": [
          {
            "Endpoint": "*",
            "Period": "1m",
            "Limit": 5
          }
        ],
        "EndpointRules": []
      },
      "IpRateLimitPolicies": {
        "Default": {
          "Period": "1m",
          "Limit": 5
        }
      }
    }

    上述配置将限制每个客户端在1分钟内只能发送5个请求。如果需要更细粒度的限制,您可以配置EndpointRules

    这是一个简单的示例,您可以根据需要进行更改和优化。希望这可以帮助您开始实现API访问频次限制。

 

标签:限制,Configure,中间件,services,API,Core3.1,AddSingleton,Net
From: https://www.cnblogs.com/duhaoran/p/17283560.html

相关文章

  • 深度学习—AlexNet_CIFAR100代码
        1#导入所需的包2importtorch3#importwandb4importtorch.nnasnn5fromtorchvisionimporttransforms6fromtorch.utils.dataimportDataLoader7fromtorchvision.datasetsimportCIFAR10089#使用Compose容器组合定义图......
  • 漫画党的福利——将图片转换成漫画风格 API,附超多免费可用API 推荐(四)
    前言今天来和大家聊聊一件非常有趣的事情——将图片转换成漫画风格的API!如果你是一个漫画党,相信这个话题一定会让你感到兴奋。通过这个API,你可以将你的照片变成漫画风格,让它们变得更加有趣和艺术!我们先来看看下面这张图:BeforeAfter是不是很妙?首先,我们需要明白的是,将图片......
  • 1、kubernetes概念
    一、kubernetes简介kubernetes的本质是一组服务器集群。它可以在每个节点上运行特定的程序,来对节点中的容器进行管理。目的是为了实现资源管理的自动化。主要功能如下:1、自我修复:一旦某个容器崩溃,会秒级启动一个新容器2、弹性伸缩:可以根据业务需要,自动对集群中的容器数量进行......
  • smark doc api文档生成器插件
    1、pom.xml文件导入插入包 <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/......
  • kubernetes rabbimq3.11.11集群之mqtt插件
    1.概述本文是总结给予k8s的rabbitmq3.11.11集群的mqtt搭建rabbitmq集群搭建详见前一篇文章:kubernetes集群部署rabbimq3.11.112.自动创建mqtt账号密码wrapper-entrypoint.sh#!/usr/bin/envbash(sleep20;\admin_user=bbbbbb;\admin_passwd=111111;\rabbitmq......
  • asp.net mvc5 与图片
    【第一种方式】 HttpPostedFileBasefile1、前端POST方式提交表单@using(Html.BeginForm("Upload","Test",FormMethod.Post,new{enctype="multipart/form-data"})){<inputtype="file"name=......
  • 性能工具之JMeter两个Java API Demo
    概述本文演示两个通过JavaAPI执行JMeter脚本的示例主要功能在线生成jmx脚本(demo1)加载本地已有jmx脚本(demo2)运行多个Sampler将生成的TestPlan存储为.jmx文件执行单机压测将测试执行结果存储为.jtlor.csv文件示例Maven配置为了开始使用JMeterAPI,我们首先需要将它添加到......
  • m基于AlexNet神经网络和GEI步态能量图的步态识别算法MATLAB仿真
    1.算法描述        AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生AlexKrizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。这对于传统的机器学习分类算法而言,已经相当的出色。Alexnet网络模型于2012年提出。它具有更高维......
  • 利用高德地图 API 显示地图信息
    ​摘要 这次,我们使用高德地图的Web端(JSAPI),在免费的paas平台应用上通过输入的地址来自动生成地图。用到的高德地图服务API地图显示和标注地理编码(获取经纬度)※此例仅作开发参考,一切商用目的或者其他许可请参考高德相关网站条例。 完成图像在这篇技巧文章中,我们使......
  • kubernetes安装
    环境:   centos7.9 安装步骤:一、准备:(1、SELINUX 2、swapoff 3、hosts 4、sysctl配置)setenforce0sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/sysconfig/selinuxsystemctldisablefirewalldsystemctlstopfirewalldsystemctldisableiptables.s......