WebApiでの承認に関するいくつかのリソース(本とSOの回答)を読んでいます。
特定のユーザーのみにアクセスを許可するカスタム属性を追加したいとします。
ケース#1
私は、オーバーライドの  このアプローチを見てきました   OnAuthorization。これは、何かが間違っている場合に応答を設定します
public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 public override void OnAuthorization(HttpActionContext actionContext)
  {
   if ( /*check if user OK or not*/)
   {
     actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
   }
  }
}
ケース#2
しかし、私もこの同様の例を見たことがあります。これもオーバーライドします   OnAuthorizationが、を呼び出すことでbase:
public override void OnAuthorization(HttpActionContext actionContext) 
{ 
  base.OnAuthorization(actionContext);
    // If not authorized at all, don't bother
    if (actionContext.Response == null)  
     {
      //...
     }
}
次に、HttpActionContext.Responseが設定されているかどうかを確認します
 。設定されていない場合は、リクエストが承認され、ユーザーは問題ないことを意味します
ケース#3
しかし、私はオーバーライドするこのアプローチも見ましたIsAuthorized  :
public class AllowOnlyCertainUsers : AuthorizeAttribute
{
 protected override bool IsAuthorized(HttpActionContext context)
  {
   if ( /*check if user OK or not*/)
   {
    return true;// or false
   }
  }
}
ケース#4
そして、私は同様の例1を見ましたが、base.IsAuthorized(context)を呼び出しています:
protected override bool IsAuthorized(HttpActionContext context)
{
 if (something1 && something2 && base.IsAuthorized(context)) //??
 return true;
 return false;
}
もう一つ
OnAuthorizationはオーバーライドしないでください。[AllowAnonymous]の処理が欠落しているためです。
ご質問
1)どの方法を使用する必要がありますか:
IsAuthorizedまたはOnAuthorization?(またはいつ使用するか)2)
base.IsAuthorized orbase.OnAuthorization`はいつ呼び出す必要がありますか?3)これは彼らがそれをどのように構築したか?応答がnullの場合、すべて問題ありませんか?(ケース#2)
NB
注意してください、私はAuthorizeAttributeすでに継承しているものだけを   使用しています(そして使用したい)AuthorizationFilterAttribute
どうして ?
私が最初の段階にいるので:http ://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api

とにかくAuthorize属性を拡張して質問します。