授权中间件不阻止请求
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 完成任务。
但这是一个微优化,因为第二个不调用异步状态机。
为了验证我对选定用户的 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 完成任务。
但这是一个微优化,因为第二个不调用异步状态机。