如果在 WebAPI 中授权失败,如何 return 自定义消息

How to return custom message if Authorize fails in WebAPI

在我的 WebAPI 项目中,我有许多用 [Authorize] 属性修饰的 api。

[Authorize]
public HttpResponseMessage GetCustomers()
{
   //my api
}

如果用户没有正确的令牌,则会向用户return发送拒绝访问异常。

但我需要的是,在任何此类情况下,我都需要 return 自定义响应消息作为。

{
  "StatusCode" : 403,
  "message": "You donot have sufficient permission"
}

如果授权失败,我如何return此自定义消息。

请注意:

有不同的方法可以做到这一点,但最好的方法之一可能是自定义授权 attributes.You 只需要继承 AuthorizeAttribute 并覆盖它的 HandleUnauthorizedRequest() 方法。

public class CustomAuthorization : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
    {
        actionContext.Response = new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.Forbidden,
            Content = new StringContent("You are unauthorized to access this resource")
        };
    }
}

并像这样使用(CustomAuthorization 应该用来代替 Authorize

    [CustomAuthorization]       
    public IHttpActionResult Get()
    {
        return Ok();
    }

否则您也可以在客户端捕获状态代码并显示您选择的自定义消息。