BasicAuthenticator
がリクエストには有効な資格情報がありませんとき403応答を送信する責任があります。桟橋6のソースを見てみると
、あなたが最高だ賭けはBasicAuthenticatorはをサブクラス化し、オーバーライドすることはおそらくありpublic void sendChallenge(UserRealm realm,Response response)
public class MyAuthenticator extends BasicAuthenticator {
@Override
public void sendChallenge(UserRealm realm, Response response) {
int numberOfAttempts = getNumberOfAuthenticationAttempts();
if (numberOfAttempts > 3) {
sendContactDetails(realm, response);
}
else
super.sendChallenge(realm, response);
}
protected int getNumberOfAuthenticationAttempts() { ... }
protected void sendContactDetails(Response response) { ... }
}
明らかにこれをやって問題は、あなたがアクセス権を持っていないということですHttpServletRequest
に移動すると、追跡要求の試行がより困難になる可能性があります。あなたはおそらくHttpConnection.getCurrentConnection()
経由でこれにアクセスすることができます。そうでなければ、BasicAuthenticator
のコードは、コピー/ペーストの塊なしでは拡張子にはなりませんが、あなたのケースでは問題ありません。
同じ認証試行でリクエスト数がどのように追跡されたかという問題は無視しています。これはクライアントの接続状況に依存します。
また、コンテキストにErrorHandler
を設定することもできます。これは、HttpResponse.sendError
が呼び出されたときに使用されます。これは、レルムで例外をスローする場合に発生します。
私はおそらくより明確に責任を分けるので、最初の方法を使用することを選択します。
未確認の証明書についてJettyから500エラーが送信されました。https://bugs.eclipse.org/bugs/show_bug.cgi?id=486497 500エラーページではなくログインページに戻る方法を知っていますか?私は拡張されたErrorHandlerを持っています。私は現在、500のエラーを選び出し、httpヘッダーのBasic Authをクリアするためにユーザーをログアウトしようとしています:Authorization:Basic QTo = –