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

Web开发:ABP框架12——中间件Middleware的创建和使用

一、简介

        中间件可以用于鉴权、日志,拦截器可以用于指定方法或url的业务逻辑处理,两者分工不同,实现效果相似,先执行中间件,后执行拦截器,再到WebAPI接口。

二、示例

        一个Token验证中间件

三、代码

1.Startup.cs

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env){// 省略其余代码// 注册 Token 校验中间件(示例)app.UseMiddleware<TokenValidationMiddleware>();// 省略其余代码}

2.TokenValidationMiddleware.cs

public class TokenValidationMiddleware
{private readonly RequestDelegate _next;private readonly ILogger<TokenValidationMiddleware> _logger;public TokenValidationMiddleware(RequestDelegate next, ILogger<TokenValidationMiddleware> logger){_next = next;_logger = logger;}public async Task InvokeAsync(HttpContext context){try{// 检查 URL 是否以 api/getbook 开头if (context.Request.Path.StartsWithSegments("/api/DemoService/GetCityData")){var token = context.Request.Headers["Authorization"].FirstOrDefault();if (string.IsNullOrEmpty(token) || !ValidateToken(token)){// 如果没有Token或Token无效,返回未授权错误context.Response.StatusCode = StatusCodes.Status401Unauthorized;await context.Response.WriteAsync("授权错误!");return;}}// 如果Token有效或路径不匹配,则继续执行下一个中间件await _next(context);}catch (System.Exception ex){_logger.LogError(ex.ToString());}}// Token 校验逻辑(仅示例)private bool ValidateToken(string token){return token == "123456";}
}

 

http://www.lryc.cn/news/594767.html

相关文章:

  • AR巡检和传统巡检的区别
  • CCLink IE转ModbusTCP网关与三菱PLC通讯无纸记录器
  • uni-app开发小程序,根据图片提取主题色值
  • 网络编程基础:从 OSI 模型到 TCP/IP 协议族的全面解析
  • Android 中 SystemServiceManager 和 ServiceManager 的应用场景、区别与联系
  • 漏洞扫描 + 渗透测试:双轮驱动筑牢网络安全防线
  • Ubuntu 22.04 使用 Docker 安装 Redis 5 (安装包形式)
  • 内网与外网是通过什么进行传输的?内外网文件传输的安全方法
  • C#最佳实践:为何应尽量减少静态类的使用
  • 迅为八核高算力RK3576开发板摄像头实时推理测试 RetinaFace人脸检测
  • Curtain e-locker 易锁防泄密:无需网络隔离,实现安全与效率并存
  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • 进程资源分配的安全性判断与安全序列
  • ZooKeeper学习专栏(四):单机模式部署与基础操作详解
  • 【c++】leetcode5 最长回文子串
  • 突破量子仿真瓶颈:微算法科技MLGO量子算法的算术化与核操作迭代模型
  • 飞算科技:以原创技术为翼,赋能产业数字化转型
  • Spring 中的 Bean 作用域(Scope)有哪些?各自适用于什么场景?
  • 江苏思必驰科技25Java实习面经
  • react class和function 如何模拟vue中的 双向绑定 监听 computed的方式
  • Component cannot be used as a JSX component
  • 芯谷科技--固定电压基准双运算放大器D4310
  • 杰和科技工业计算机AF208,打造高可靠新能源汽车检测产线
  • 杰发科技AC7840——硬件crc使用
  • 【烧脑算法】拓扑排序:从“依赖”到“序列”,理解题目中的先后逻辑
  • 5.6 framebuffer驱动
  • 录音转写:颠覆传统共享下载体验 | 如何提升团队效率?
  • 【前端状态更新与异步协调完全指南:React、Vue架构原理与复杂业务场景实战】
  • RustDesk自建服务器完整部署指南:从零开始到成功连接。成功解决rustdesk报错:未就绪,请检查网络连接
  • Vue 脚手架——render函数