当前位置: 首页 > 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.xdnf.cn/news/1160911.html

相关文章:

  • delphi disqlite3 操作sqlite
  • 通信刚需小能手,devicenet转PROFINET网关兼容物流分拣自动化
  • 【Elasticsearch】IndexModule
  • 【Elasticsearch】BM25的discount_overlaps参数
  • SVM(Support Vector Machine)从入门到精通
  • [Python] -项目实战10- 用 Python 自动化批量重命名文件
  • odoo-059 xml中字段上写 domain 和 filter_domain 什么区别
  • 第三章自定义检视面板_创建自定义编辑器类_如何自定义预览窗口(本章进度5/9)
  • Ubuntu 22.04 安装 Jdk 8和 Tomcat (安装包形式)
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法
  • Sklearn 机器学习 IRIS数据 理解分类报告
  • Nginx IP授权页面实现步骤
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • Zetane:让深度学习不再抽象,一键3D可视化
  • CFD总压边界条件的理解与开发处理
  • 深入解析 Linux 硬链接与软链接:原理、区别及应用场景
  • 用户虚拟地址空间布局架构
  • C语言:20250721笔记
  • 日历类生辰八字九九三伏入梅出梅算法
  • 【用unity实现100个游戏之34】使用环状(车轮)碰撞器(Wheel Collider)从零实现一个汽车车辆物理控制系统,实现一个赛车游戏
  • PHP反序列化漏洞详解
  • 悬镜安全将受邀参加2025开放原子开源生态大会
  • 进程资源分配的安全性判断与安全序列
  • A316-Mini-V1:超小尺寸USB高清音频解码器模组技术探析
  • 基于Vue与CloudBase AI Toolkit的色觉识别Web应用开发报告:VibeCoding新范式实践
  • C#/.NET/.NET Core技术前沿周刊 | 第 47 期(2025年7.14-7.20)
  • 【前端状态更新与异步协调完全指南:React、Vue架构原理与复杂业务场景实战】
  • Django关于ListView通用视图的理解(Cursor解释)
  • RBAC(Role-Based Access Control,基于角色的访问控制)介绍(一种通过角色来管理用户权限的访问控制模型)
  • Spring Boot 集成 RabbitMQ:普通队列、延迟队列与死信队列全解析