2

JDBC を使用した認証に Tomcat 7 と Realm を使用しています。独自の実装を使用するように DataSourceRealm を拡張しました。私の問題は、場合によっては、Tomcat REALM が DataSourceRealm のメソッドを呼び出さず、最初から認証に失敗するように見えることです。これは通常、ユーザーが認証されている間に DB でパスワードを変更したときに発生します。ユーザーを無効にして再度ログインしようとした後、使用しようとしているパスワードに関係なく、Tomcat でログインできません。これを修正するには、Tomcat を再起動するだけです。

DataSourceRealm クラス (拡張クラス) にブレークポイントを設定すると、通常は tomcat が認証メソッドを呼び出しますが、特別なケースでは TC は DataSourceRealm で何も呼び出しません。どうしてこれなの?ある種のキャッシングはありますか?これについては何も文書化されていません。

もう 1 つ: ユーザー名の文字を大文字に変更すると、多くの場合うまくいきます。そのため、aDmin としてログインできますが、admin としてログインすることはできません (aDmin を使用すると、期待どおりに DataSourceRealm が呼び出されます)。これにより、ユーザーが何らかの形でキャッシュされていると確信できます。

4

1 に答える 1

0

基本認証でこの問題が発生している場合、資格情報をキャッシュして再度使用しようとするのはブラウザーです。

一度認証した場合、資格情報を変更し、ログオフして再度ログインしようとすると、ブラウザーは資格情報を再度要求せず、パスに失敗します。

ブラウザを閉じて、ページを再度開いてみてください。ログインとパスワードが再度求められます。

于 2013-03-16T21:44:57.977 に答える