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";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值