0

com.sun.net.httpserver.HttpServer に基づいて Java プログラムに小さな HTTP サーバーを実装しました。これも基本認証を使用します。これはすべて正常に機能しますが、失敗した認証要求を処理したいと考えています。

デフォルトでは、ユーザーが認証に失敗すると (ブラウザのログイン ポップアップで [キャンセル] ボタンをクリックすると)、空白のページがクライアントに返されます。HttpHandler の handle() メソッドは呼び出されません。

プログラムでこれらの失敗した認証試行をキャッチする方法はありますか?

ありがとう!

4

2 に答える 2

1

ドキュメントを見ていました... AuthenticatorからAuthenticator.Retry Resultを返すことでこれを行うことができ、その中で新しいヘッダー「Location: http://mysite/loginpage」または必要なものを指定しますにリダイレクトします (相対 URL /loginpage ではなく、http:// で始まる絶対 URL を指定する必要があることに注意してください)。

編集: BasicAuthenticator のサブクラスを使用している場合は、認証方法もオーバーライドする必要があります。元のソース コードを参照してください ( http://xantorohara.blogspot.com/2008/07/sources-ofを参照)。 -comsunnethttpserverhttpserve.html ) 元の認証メソッドの動作を確認する... または、authenticate() メソッドで実験して、super.authenticate() が何を返すかを確認し、それが失敗の場合は、代わりに場所を指定して再試行を送信します: ヘッダー

于 2012-04-23T22:37:23.493 に答える
0

フィルターがオーセンティケーターの前に呼び出されるかどうかはわかりません (フィルターでコンソールにデバッグ情報を出力することで確認でき、オーセンティケーターが「あなたを追い出す」前にコンソールに書き込まれるかどうかを確認できます。そうであれば、そうするかもしれませんこれは、認証の前に実行され、ユーザーをエラー ページにリダイレクトするフィルターを作成することによって行われます。

于 2012-04-23T22:25:40.223 に答える