如何更改 Web API 核心未经授权的行为



未经授权的请求的默认ASP.NET Web Api Core行为是发送包含空内容的401/403 error。我想通过指定某种指定错误的 Json 响应来更改它。

但我很难找到一个合适的地方来引入这些变化。官方文档没有帮助(全部阅读)。我有一个猜测,可能是我可以在我的异常过滤器/中间件中捕获UnathorizedException但它没有成功(我想它在授权级别处理,甚至根本不抛出)。

所以我的问题是,在未经授权的请求的情况下,我如何自定义响应行为。

使用 .Net Core 3(也可能更早),您可以编写一个中间件来检查上下文。响应的状态为 40x,然后返回自定义对象。以下是我大致是如何做到的:

if (context.Response.StatusCode == (int)HttpStatusCode.Unauthorized)
{
 var result = new MyStandardApiResponseDto
 {
  Error = new MyErrorDto
   {
    Title = "Unauthorized",
     Messages = new List<string> { "You are not authorized to access the resource. Please login again." },
   },
  Result = null
 };
 await context.Response.WriteAsync(JsonConvert.SerializeObject(result));
}

相关内容

  • 没有找到相关文章

最新更新