我如何覆盖默认消息,对此请求的授权已被拒绝

问题描述 投票:0回答:1

如何在MVC WebApi中使用自定义消息更改默认响应消息?

{ "Message": "Authorization has been denied for this request." }

提前感谢

c# asp.net-mvc asp.net-web-api model-view-controller authorization
1个回答
0
投票

您必须创建一个从AuthorizeAttribute派生的类并重写HandleUnauthorizedRequest方法。这样的事情(注意:这未经测试):

using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Controllers;

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
    {
        if (!IsAuthorized(actionContext))
        {
            actionContext.Response = actionContext.Request.CreateErrorResponse(
                HttpStatusCode.Forbidden, 
                "Custom message goes here");
        }
    }
}

然后在任何使用AuthorizeAttribute的地方,都将其替换为MyAuthorizeAttribute

© www.soinside.com 2019 - 2024. All rights reserved.