要为所选用户验证我的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)
这里我还添加[授权]添加其无效工作返回500错误
有什么建议吗?
答案 0 :(得分:1)
编写自定义中间件时,必须调用await _next(httpContext)
来执行管道中的下一个中间件。
删除它(有条件地),它不会在管道中进一步调用中间件。
if(someConditionIsTrue)
{
await _next(httpContext);
}
或者,如果您不想调用管道中的其他中间件,则可以通过return Task.Completed;
而不是return _next(httpContext)
返回已完成的任务。
但它是一个微优化,因为第二个没有调用异步状态机。