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 @   点终将连成线  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于决定:把自己家的能源管理系统开源了!
· 外部H5唤起常用小程序链接规则整理
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· 了解 ASP.NET Core 中的中间件
· 详解:订单履约系统规划
历史上的今天:
2021-04-02 值类型和引用类型
点击右上角即可分享
微信分享提示