サーバーへのすべてのリクエストでヘッダー情報を探す検証ルーチンを実行する必要があります。ASP.NET MVCのOnActionExecutingまたはActionInvokerを使用してすべての要求を実行しますが、Web APIを調べていて、特定のものは見つかりませんでした。
同期と非同期の両方に何かを実装できるのであれば、それが最善でしょう。
サーバーへのすべてのリクエストでヘッダー情報を探す検証ルーチンを実行する必要があります。ASP.NET MVCのOnActionExecutingまたはActionInvokerを使用してすべての要求を実行しますが、Web APIを調べていて、特定のものは見つかりませんでした。
同期と非同期の両方に何かを実装できるのであれば、それが最善でしょう。
Web APIの場合は、MessageHandlers
メッセージハンドラーは、パイプライン内の他の何よりも先に常に最初に実行され、最後に実行することもできます(Web APIが応答を返した後、応答がクライアントに到達する直前)。
メッセージハンドラーの詳細については、 http://www.asp.net/web-api/overview/working-with-http/http-message-handlersを参照してください。
そして、APIキーを検証する簡単な例を次に示します。
public class WebApiKeyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
string apikey = HttpUtility.ParseQueryString(request.RequestUri.Query).Get("apikey");
if (apikey != "something")
{
HttpResponseMessage response = request.CreateErrorResponse(HttpStatusCode.Forbidden, "You can't use the API without the key.");
throw new HttpResponseException(response);
}
else
{
return base.SendAsync(request, cancellationToken);
}
}
}
この例では、キーが「something」のリクエストのみです。つまり、/ api / values /?apikey = somethingが許可され、他のすべては拒否されます。
あなたの場合は、request.Headersにアクセスして、必要なものを検証するだけです。