[解決済み] ASP.NET Web API : 401/unauthorized レスポンスを返すための正しい方法
2022-06-06 22:46:02
質問
OAuth/token認証を使用してリクエストを認証するMVC webapiサイトを持っています。関連するすべてのコントローラは正しい属性を持っており、認証は問題なく動作しています。
問題は、属性の範囲内ですべてのリクエストを認証できるわけではないことです。いくつかの認証チェックは、コントローラメソッドによって呼び出されるコードで実行されなければなりません。この場合、401 unauthorisedレスポンスを返す正しい方法は何でしょうか?
試してみたところ
throw new HttpException(401, "Unauthorized access");
を試してみましたが、これを実行すると、レスポンスステータスコードが500になり、スタックトレースも表示されます。ロギングの DelegatingHandler でも、レスポンスは 401 ではなく 500 であることがわかります。
どのように解決するのですか?
を投げているはずです。
HttpResponseException
ではなく、APIメソッドから
HttpException
:
throw new HttpResponseException(HttpStatusCode.Unauthorized);
また、カスタムメッセージを提供したい場合。
var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Oops!!!" };
throw new HttpResponseException(msg);
関連
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み] 2つのリストを結合する
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み] ASP.NET Web APIでエラーを返すためのベストプラクティス
-
[解決済み] 不正な webapi 呼び出しにより、401 ではなく、ログインページが返される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み] 403 Forbiddenと401 UnauthorizedのHTTPレスポンスの比較