C# 添加自定义中间件

首先呢 定义一个类 实现 IMiddleware 接口 就像下面这样

 这个方法有两个参数 ,第一个很好理解,就是当前请求的 HttpContext 表示传递请求的一些基本信息,表头、路径、访问的api等等

第二个参数表示请求管道中其余中间件的委托。

简单来说 只有当 请求通过这个中间件时,才会传递到下一个中间件。即管道

下面是一个简单的示例

public class MyMiddleware : IMiddleware
{
    RedisClient redis = new RedisClient("127.0.0.1");
    public Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        var myapi = context.Request.Path.Value.ToLower();
        var targetapi = "/api/Values/ShopCartsList".ToLower();
        if (myapi==targetapi)//是否访问目标api
        {
            var token = context.Request.Headers["token"].ToString();
            if (!string.IsNullOrEmpty(token))
            {
                if (token == redis.HGet("UserToken", token))
                {
                    return next(context);//请求被允许 传递到下一个中间件。
                }
            }
            return Task.CompletedTask; //否则返回
        }
        return next(context); //未访问目标api 请求被允许
    }
}

然后嘞 就是program中的配置了

 

切记 自定义中间件一定要写在跨域中间件的下面

end...

 

posted @ 2023-09-08 11:23  小雨转晴被占用了  阅读(309)  评论(0)    收藏  举报