C# WebAPI中授权失败时如何返回自定义消息
在我的WebAPI项目中,我有许多API都用C# WebAPI中授权失败时如何返回自定义消息,c#,asp.net-web-api,owin,authorize-attribute,C#,Asp.net Web Api,Owin,Authorize Attribute,在我的WebAPI项目中,我有许多API都用[Authorize]属性修饰 [Authorize] public HttpResponseMessage GetCustomers() { //my api } 如果用户没有正确的令牌,将向用户返回拒绝访问异常 但我需要的是,在任何这种情况下,我都需要返回自定义响应消息 { "StatusCode" : 403, "message": "You donot have sufficient permission" } 如果授权失败,
[Authorize]
属性修饰
[Authorize]
public HttpResponseMessage GetCustomers()
{
//my api
}
如果用户没有正确的令牌,将向用户返回拒绝访问异常
但我需要的是,在任何这种情况下,我都需要返回自定义响应消息
{
"StatusCode" : 403,
"message": "You donot have sufficient permission"
}
如果授权失败,如何返回此自定义消息
请注意:
- 我正在使用基于Owin令牌的身份验证
- 我没有将访问令牌存储在我的数据库或任何其他地方
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
应代替authorization
)
否则,您还可以在客户端捕获状态代码,并显示您选择的自定义消息 看看这里的答案:谢谢,伙计:)它满足了我的要求。正如您提到的,有很多种方法,如果您能再添加一种方法,我将不胜感激。其他方法可以是在客户端处理异常,也可以是在全局应用程序级别处理异常,但根据我的知识,这是我上面提到的最佳方法。听起来很棒。再次感谢:)如何在.NETCore中做到这一点??一直在寻找,但一切似乎都朝着气候和政策的方向发展。只需要像这样简单的东西?感谢这不再适用于MVC 5,因为HandleUnauthorizedRequest接受System.Web.MVC.AuthorizationContext类型的参数
[CustomAuthorization]
public IHttpActionResult Get()
{
return Ok();
}