我需要以不同的语言传递自定义的“未授权”消息,而不是默认的“此请求的授权已被拒绝”。我使用 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");
}
}
关于c# - 401 上的自定义 [授权] 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378644/