c# - 在 dotnet core 3.0 中使用 [Authorize]-attribute 时修改响应内容
问题描述
我们使用[Microsoft.AspNetCore.Authorization.Authorize]
-attribute 来授权对我们 api 的请求。如果 JWT 在 HTTP-Header 中不存在或无效,则返回 401 错误。我们希望修改响应正文以包含更多信息,而不是空正文。我们尝试做以下事情:
app.Use(async (context, next) =>
{
var statusCode = context.Response.StatusCode;
//write a custom body here
});
但是状态码在我看来总是HTTP.200
有点奇怪,因为 Postman 告诉我它是HTTP.401
如果在我们的 api 中抛出异常,我们已经实现了一个过滤器,该过滤器实现IActionFilter
了返回更详细的错误消息。这就是我们在HTTP.401
. 有没有我可以添加的过滤器来实现这一点?
解决方案
所以你需要在 JWT 之前添加你自己的中间件,调用下一个处理程序,检查结果并添加你的自定义响应。
app.Use(async (context, next) =>
{
await next.Invoke();
var statusCode = context.Response.StatusCode;
});
app.UseAuthentication();
推荐阅读
- asp.net-mvc - 删除具有外键关系的实体而不删除引用对象
- java - 尝试为对象分配随机 ID
- html - 打开软件键盘时保持页脚可见
- android - 具有多个主题的firebase消息传递条件不起作用
- javascript - 如何在不先单击的情况下自动注销用户会话
- tableau-api - Tableau 中的条件格式连接到多维数据集数据
- apache - 如何为多个域变体生成 LetsEncrypt 证书?
- javascript - 如何使用 OfficeJS 获取带有 Outlook 365 消息打印预览的 URL?
- java - 使用 ButterKnife 处理自定义 AlertDialog 时出现异常
- java - Android 中的电话目录以及从其中获取任何内容的问题