OAuth /トークン認証を使用してリクエストを認証するMVC webapiサイトがあります。関連するすべてのコントローラーに適切な属性があり、認証は正常に機能しています。
問題は、すべてのリクエストを属性のスコープで承認できないことです。一部の承認チェックは、コントローラメソッドによって呼び出されるコードで実行する必要があります。この場合、401の不正な応答を返す正しい方法は何ですか。
私は試しましたがthrow new HttpException(401, "Unauthorized access");
、これを行うと、応答ステータスコードが500になり、スタックトレースも取得されます。ログ記録のDelegatingHandlerでも、応答が401ではなく500であることがわかります。
HttpResponseException
理解する人には、を返すタイミングとを返すタイミングの適切な時間について考えることをお勧めしUnauthorized()
ます。「予期された」エラーに例外を使用することは少しアンチパターンであるため、呼び出しがこの間違いをすることが予想される場合、戻るのUnauthorized()
はおそらく正しい呼び出しです。HttpResponseException
本当に予想外のために保存します。