授权中间件不阻止请求

Authorize Middleware not block the request

为了验证我对选定用户的 API 访问权限,我为验证用户 http 请求编写了中间件 中间件正在执行并更改请求的 StatusCode

但 API 方法仍在执行

这是我的中间件

 httpContext.Response.StatusCode = 401;
 httpContext.Response.WriteAsync("Invalid username or password.");

return _next(httpContext);

我在这里注册中间件

app.UseAuthenticationMiddleware();

这是我的 API 方法

[HttpPost]       
public async Task<IActionResult> CreatePolicy([FromBody] Customer customerDetails)

这里我还添加了 [授权] 添加它不工作 return 500 错误

有什么建议吗?

编写自定义中间件时,您必须调用await _next(httpContext) 来执行管道中的下一个中间件。

(有条件地)删除它,它不会在管道中进一步调用中间件。

if(someConditionIsTrue)
{
    await _next(httpContext);
}

或者,如果不想调用管道中的其他中间件,您可以通过 return Task.Completed; 而不是 return _next(httpContext) 来 return 完成任务。

但这是一个微优化,因为第二个不调用异步状态机。