当前位置: 首页 > news >正文

学习和测试WebApi项目限制客户端ip访问接口(基于中间件)

  WebApi项目需要限制仅允许有限的客户端访问接口,百度相关内容,网上很多介绍WebApi接口IP限流的文章,稍微调整就能用于限制IP访问,微软官网中也有文章介绍客户端 IP 安全列表(参考文献1),可以通过中间件、过滤器等多种方式实现IP访问限制,本文学习和测试基于中间件实现WebApi接口限制客户端ip访问的基本用法。
  基于中间件做IP限制,需要自定义中间件类,每次客户端访问前都会调用该中间件,从中间件中获取客户端访问IP并判断是否在指定的IP集合中,在的话允许访问接口,否则直接返回错误信息。
  自定义中间件类的代码及其在program.cs文件中的使用方式如下所示:

// 自定义中间件类
public class IpFilterMiddleware
{private readonly RequestDelegate _next;private readonly string[] _allowedIps;public IpFilterMiddleware(RequestDelegate next, IConfiguration config){_next = next;_allowedIps = config.GetSection("AllowedIps").Get<string>().Split(','); }public async Task Invoke(HttpContext context){var clientIp = context.Connection.RemoteIpAddress?.ToString();if (_allowedIps.Contains(clientIp)){await _next(context); }else{context.Response.StatusCode = 403; // 返回403 Forbidden状态码await context.Response.WriteAsync("客户端IP禁止访问WebApi接口"); }}
}//使用中间件类
var app = builder.Build();// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseMiddleware<IpFilterMiddleware>();//使用中间件类app.UseWebSockets();

  实现上面的代码后,客户端调用WebApi接口时即在IpFilterMiddleware中进行IP过滤,禁止访问的效果如下图所示:
在这里插入图片描述

参考文献:
[1]https://learn.microsoft.com/zh-cn/aspnet/core/security/ip-safelist?view=aspnetcore-9.0
[2]https://blog.csdn.net/sd7o95o/article/details/145102403

http://www.dtcms.com/a/184112.html

相关文章:

  • 深度学习入门:从神经网络基础到前向传播全面解析
  • [洛谷刷题8]
  • Redis三种高可用模式的使用场景及特点的详细介绍
  • # KVstorageBaseRaft-cpp 项目 RPC 模块源码学习
  • JVM中的安全点是什么,作用又是什么?
  • 苍穹外卖-创建阿里云oss工具包
  • 缓存(4):常见缓存 概念、问题、现象 及 预防问题
  • 关于物联网的基础知识(一)
  • 串口通讯
  • 【东枫科技】使用LabVIEW进行NVIDIA CUDA GPU 开发
  • 数据库分库分表实战指南:从原理到落地
  • ARMV8 RK3399 u-boot TPL启动流程分析 --start.S
  • JVM-类加载子系统
  • 机器学习极简入门:从基础概念到行业应用
  • 锚定基础与拥抱融合:C 语言在编程教育与技术社区的破圈之路
  • 全模态具身智能:从 VLM 到 MLLM
  • Java大师成长计划之第18天:Java Memory Model与Volatile关键字
  • 单片机-STM32部分:13、PWM
  • STM32智能窗帘系统:从零到一的开发实战
  • 开源字体设计工具字玩 FontPlayer
  • “爱生活”小项目问题总结
  • 【大模型】解决最新的Dify1.3.1版本 无法基于Ollama成功添加模型
  • LabVIEW的PID参数自适应控制
  • Nacos 从入门到实践:服务注册与配置中心完整指南
  • 兔子队列?RabbitMQ详解(1)
  • Springboot中如何自定义配置类
  • 【Tools】git使用详解以及遇到问题汇总
  • 【iOS】Tagged Pointer
  • 从0开始学习大模型--Day06--大模型的相关网络架构
  • 【Bluedroid】HID DEVICE 连接的源码分析