0

WebAPI 2 アプリ用に以下のカスタム AuthorizationFilterAttribute を作成しました。

public class ApiKeyRequiredAttribute : AuthorizationFilterAttribute
{
    private string key;

    public ApiKeyRequiredAttribute(string key) : base()
    {
        this.key = key;
    }

    public override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
    {
        IEnumerable<string> headers = new List<string>();
        actionContext.Request.Headers.TryGetValues("x-apikey", out headers);
        if (!headers.Any() || headers.Single() != this.key)
        {
            throw new SecurityException("Invalid API key provided");
        }
        return base.OnAuthorizationAsync(actionContext, cancellationToken);
    }
}

正しいヘッダーを持つユーザーには結果が表示され、他のユーザーには例外が発生します。ただし、どうすれば を返すことができHTTP Error 401 Unauthorizedますか?

例外をスローしないとすぐに、通常の実行フローが続行されます。確かに、グローバル例外ハンドラーを実装する必要はありませんよね?

4

1 に答える 1