我需要以不同的语言传递自定义的“未经授权”消息,而不是默认的“对此请求已拒绝授权”。我将Owin用作身份验证,并将ApiControllers /方法的[Authorize]属性使用。我知道可以使用自定义自动过滤器来完成此操作,但是仅更改发送给客户端的消息似乎就显得过头了。
有没有更简单的方法来更改消息,还是应该坚持使用自定义授权过滤器?
谢谢
最佳答案
不幸的是,这是不可能的。
基于source code,一种选择是创建一个新的自定义Authorize属性,该属性继承自AuthorizeAttribute
。然后,您只需要覆盖HandleUnauthorizedRequest
方法,并用自己的方法替换即可。其余方法仍将由基本AuthorizeAttribute
处理
public class MyCustomAuthAttribute : AuthorizeAttribute
{
protected virtual void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
if (actionContext == null)
{
throw Error.ArgumentNull("actionContext");
}
actionContext.Response =
actionContext.ControllerContext.Request.CreateErrorResponse(
HttpStatusCode.Unauthorized,
"My Un-Authorized Message");
}
}