3

承認がないために 401 エラーをスローする場合、www-authenticate ヘッダーを含めたいと考えています。

しかし、どうすればそれを行うことができますか?

応答フィルターを試してみましたが、うまくいかなかったようです。

編集

httperror がスローされたときに応答フィルターが呼び出されません。

appHost.ResponseFilters.Add((req, res, obj) => res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=..."));

例外ハンドラーが呼び出されますが、追加されたヘッダーは応答の一部ではありません (Chrome 開発ツールとPostmanの両方による)

appHost.ExceptionHandler += (req, res, name, exception) => res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=...");
4

1 に答える 1

1

応答ヘッダーに追加できるフックが見つかりません:

  • ResponseFilters例外がスローされた後に呼び出されません。
  • ServiceExceptionHandler応答オブジェクトを提供しません。
  • ExceptionHandler応答が送信された後に呼び出されるため、遅いです。

リクエスト フィルターで認証情報をチェックするので、そこでレスポンス オブジェクトにアクセスできます。LogonException最終的に、トラップしてヘッダーを追加できるカスタム例外が発生しました。

appHost.RequestFilters.Add(
    (req, res, obj) => 
    {
        var creds = request.GetBasicAuthUserAndPassword();

        try
        {
            myService.logon(creds);
        }
        catch(LogonException)
        {
            res.AddHeader(HttpHeaders.WwwAuthenticate, "Basic realm=...");
            trow;
        }
    });
于 2013-05-15T11:44:11.157 に答える