2016-09-01 4 views
1

[Authorized]属性で保護されたコントローラを使用して、ASP.NET Web API 2エンドポイントを作成しました。webapiで[Authorize]フィルタの不正アクセスのログを追加する方法

認証されていないアクセスには、401 Unauthorized http statusが表示されます。

ここで、これらの不正アクセスをログファイルに記録したいと思います。しかし、私はどこに不正アクセスを処理するか分かりません。

答えて

1

ソリューションは、ちょうど承認がこの方法カスタム属性がデフォルトから継承フィルタを認可作成するには、次のようになります。

public class LogAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext) 
    { 
     var authorized = base.IsAuthorized(actionContext); 
     if (!authorized) 
     { 
      // log the denied access attempt. 
     } 
     return authorized; 
    } 
} 

この方法では、あなたが親から同じAUTHORIZE検証を維持しますが、次のような追加のことを行うことができます不正なアクセスをケースに記録します。

あなたは、単にあなたのWeb APIのメソッドでそれを使用することができます。

public class ValuesController : ApiController 
{ 
    [LogAuthorize] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
} 
+0

、これはそれを行うにはどのように右のanswereです。 –

+2

本当ですか?グローバルなアクセスポイント、フィルタ、またはishが存在しないため、これを傍受してすべてのAuthorize属性を置き換える必要はありません。 – JobaDiniz

関連する問題