1

ClaimsAuthorizationManagerソースによると、の子クラスCheckAccessが false を返す場合、フレームワークの設計により、セキュリティ例外がスローされます。

ApiController の関数を (たとえば) で装飾したい場合、このエラーをキャッチする方法はないようです[ClaimsPrincipalPermission(SecurityAction.Demand, Operation="Read", Resource="Something")]

サンプルの AuthorizationManager を既に作成し、ClaimsAuthorizationManager を派生させて、web.config に登録しました。この構成部分は機能します。

public class AuthorizationManager : ClaimsAuthorizationManager
{
     public override bool CheckAccess(AuthorizationContext context)
     {
          return false; // just to show that it will throw the security exception
     }     
}

そのため、何があっても失敗するように認証を設定しましたが、「侵襲的な」500 (内部サーバーエラーとして返されるセキュリティ例外) ではなく、401 応答をユーザーに返したいと考えています。

誰もこれに対する答えをどこにも持っていないようで、クライアントへの不正アクセスを通信するために 500 に落ち着くようです.

4

1 に答える 1

0

これは単なるアイデアですが、Items コンテナーにフラグを設定してから、Application_EndRequest で次の 2 つの条件が発生するかどうかを確認することもできると思います。

  • 応答ステータス コードは 500 です
  • 旗が立てられた

このような場合は、ステータス コードを 401 に変更するだけで済みます。

于 2013-08-28T15:35:33.900 に答える