[英]How to return status code 401 along some additional data?
我正在尝试编写一个自定义 Authorize 属性来授权一些 API 端点和 MVC 操作。 按照这个 StackOverflow answer ,我写了一个自定义属性。 我正在使用 UnauthorizedResult 返回 401。
回答您的第一个问题,这是授权属性的重写方法的样子。 错误消息将是状态消息,内容在响应正文中。
public override Task OnAuthorizationAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
{
string errorMessage = "User has no enough permissions to perform requested operation.";
var httpContent = new StringContent("{ \"some\": \"json\"}", Encoding.UTF8, "application/json");
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden)
{
ReasonPhrase = errorMessage,
Content = httpContent
};
return Task.FromResult<object>(null);
}
从 MVC 操作中,您可以像这样return StatusCode(418);
状态代码return StatusCode(418);
或者使用像return Unauthorized();
这样的专用方法return Unauthorized();
. 要重定向,您可以使用RedirectToAction
或context.Response.Redirect
至少适用于ASP.NET Core
更现代的响应是
public async Task<IActionResult> CtrlAction()
{
...
var result = // whatever object you want
return StatusCode((int) HttpStatusCode.Unauthorized, result);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.