当前位置: 首页 > 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.dtcms.com/a/290357.html

相关文章:

  • 轨迹优化 | 基于边界中间值问题(BIVP)的路径平滑求解器(附C++/Python仿真)
  • Python自然语言处理实战:spaCy从入门到进阶的工业级应用指南
  • 《C++》范围 for 循环,空指针nullptr
  • 【iOS】多界面传值(五大传值方式)
  • PHP高级进阶:突破编程边界,开启技术新征程
  • GaussDB alter table的用法
  • Charles 抓包工具中文版完整指南 提升 API 调试与性能调优
  • Netty实现单通道并发读写,即多路复用
  • 神经网络——线性层
  • 混合遗传粒子群算法在光伏系统MPPT中的应用研究
  • imx6ull-系统移植篇15——U-Boot 图形化配置(下)
  • 蚂蚁数科AI数据产业基地正式投产,携手苏州推进AI产业落地
  • 使用Python绘制专业柱状图:Matplotlib完全指南
  • 《Linux服务与安全管理》| 安装拼音输入法
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页布局实现
  • “hidden act“:“gelu“在bert中作用
  • 经典神经网络(vgg resnet googlenet)
  • 家庭网络怎么进行公网IP获取,及内网端口映射外网访问配置,附无公网IP提供互联网连接方案
  • 03-虚幻引擎蓝图类的各父类作用讲解
  • el-table固定高度,数据多出现滚动条,表头和内容对不齐
  • Eltable tree形式,序号列实现左对齐,并且每下一层都跟上一层的错位距离拉大
  • 深入解析Hadoop MapReduce Shuffle过程:从环形缓冲区溢写到Sort与Merge源码
  • VMware Workstation Pro克隆虚拟机导致网络异常解决方法
  • 深度学习 pytorch图像分类(详细版)
  • 【设计模式】观察者模式 (发布-订阅模式,模型-视图模式,源-监听器模式,从属者模式)
  • HTTP性能优化:打造极速Web体验的关键策略
  • 从实践出发--探究C/C++空类的大小,真的是1吗?
  • 西门子 S7-1500 信号模块硬件配置全解析:从选型到实战
  • 如何快速比较excel两列,拿出不同的数据
  • 在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型