AspNetCore自定义中间件

中间件经常用定义好的,但是有的时候迫于业务需求必须自定义一些中间件,比如:

①当每次请求都需要token验证是否有效时可以在中间件直接拦截进行验证,而不是用过滤器,这样的话就不需要修改过多的代码也可以减少系统的开销;

②把某个请求加上响应的头部;(返回文件流时,拿不到文件名可以在响应头部加上文件名)

复制代码
public class AddResponseHeaderMiddleware
    {private readonly RequestDelegate _next;
        public AddResponseHeaderMiddleware(RequestDelegate requestDelegate)
        {
            _next = requestDelegate;
        }
        public async Task InvokeAsync(HttpContext context)
        {
       //在请求头部添加信息
            if (context.Request.Path.Value.Contains("/ExportNewExcel"))
            {
                context.Response.Headers.Add("Title", $"{title}.xlsx");
            }
            if (context.Request.Path.Value.Contains("/token"))
            {
               var token= context.Request.Query["token"].ToString();
               //验证token
         //如果无效直接返回;
         //context.Response.StatusCode = 200;
         //context.Response.ContentType = "application/json; charset=utf-8";
         //await context.Response.WriteAsync(JsonConvert.SerializeObject(new { Status = 15, Msg = "没有权限操作" }));
            }
        //不做任何处理传递给下一个中间件
            await _next.Invoke(context);
        }
    }
复制代码

注册中间件:

 app.UseMiddleware<AddResponseHeaderMiddleware>();

注意先后的顺序。

 

posted @   点终将连成线  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2021-04-02 值类型和引用类型
点击右上角即可分享
微信分享提示