如果在 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此自定义消息。
请注意:
- 我正在使用 Owin - 基于令牌的身份验证。
- 我没有将访问令牌存储在我的数据库或其他任何地方。
有不同的方法可以做到这一点,但最好的方法之一可能是自定义授权 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();
}
否则您也可以在客户端捕获状态代码并显示您选择的自定义消息。
在我的 WebAPI 项目中,我有许多用 [Authorize]
属性修饰的 api。
[Authorize]
public HttpResponseMessage GetCustomers()
{
//my api
}
如果用户没有正确的令牌,则会向用户return发送拒绝访问异常。
但我需要的是,在任何此类情况下,我都需要 return 自定义响应消息作为。
{
"StatusCode" : 403,
"message": "You donot have sufficient permission"
}
如果授权失败,我如何return此自定义消息。
请注意:
- 我正在使用 Owin - 基于令牌的身份验证。
- 我没有将访问令牌存储在我的数据库或其他任何地方。
有不同的方法可以做到这一点,但最好的方法之一可能是自定义授权 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();
}
否则您也可以在客户端捕获状态代码并显示您选择的自定义消息。