C# Windows身份验证MVC web api自定义授权属性对话框

C# Windows身份验证MVC web api自定义授权属性对话框,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有ApiController的自定义授权属性。我正在使用windows身份验证,因此我可以在对话框中输入凭据 public class APIAuthorizeAttribute : AuthorizeAttribute public override void OnAuthorization(HttpActionContext actionContext) { if ( /* my authorization method which returns true/false */ )

我有ApiController的自定义授权属性。我正在使用windows身份验证,因此我可以在对话框中输入凭据

public class APIAuthorizeAttribute : AuthorizeAttribute

public override void OnAuthorization(HttpActionContext actionContext)
{
    if ( /* my authorization method which returns true/false */ )
    {
        base.HandleUnauthorizedRequest(actionContext);
    }
}

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
    HttpContext.Current.Response.AddHeader("AuthenticationStatus", "NotAuthorized");
    actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
    return;
}   
我得到的401响应为unauthorized(这对我的情况非常好),但我不想显示凭证框,因为我想用我自己的对话框替换它,该对话框将显示“您没有此操作的权限!”。你知道我需要在代码中修改什么吗?
我也读过,可能是IIS设置,但我找不到它们。

您通常可以在web.config中指定它,但如果您使用AJAX(使用jquery或angularjs或纯javascript)而不是表单post进行调用,则它将无效。您必须包含您的客户端代码或描述如何进行调用。现在我从angular调用我的web api,但结果我得到了需要验证的提示框,当我按“取消”时,只有401。如果您是从javascript调用,您需要一个错误和http状态码。客户端然后可以将用户重定向到正确的屏幕。没有进一步的代码和a,就不可能进一步帮助您。我觉得很失败,实际上这段代码非常好,一切都很好,除了我使用基本方法来处理未经授权的,而不是我重写的那个。。。这就是为什么我收到了凭证箱和未经授权的回复。。现在我没有得到那个盒子和状态IR403禁止,这对于我的用例来说真的很好。感谢您尝试帮助我,Igor:)您通常可以在web.config中指定这一点,但如果您使用AJAX(使用jquery或angularjs或纯javascript)而不是表单post进行调用,则该操作将无效。您必须包含您的客户端代码或描述如何进行调用。现在我从angular调用我的web api,但结果我得到了需要验证的提示框,当我按“取消”时,只有401。如果您是从javascript调用,您需要一个错误和http状态码。客户端然后可以将用户重定向到正确的屏幕。没有进一步的代码和a,就不可能进一步帮助您。我觉得很失败,实际上这段代码非常好,一切都很好,除了我使用基本方法来处理未经授权的,而不是我重写的那个。。。这就是为什么我收到了凭证箱和未经授权的回复。。现在我没有得到那个盒子和状态IR403禁止,这对于我的用例来说真的很好。谢谢你试着帮助我,伊戈尔:)