我正在使用Tomcat 7和Realm来使用JDBC进行身份验证。我扩展了DataSourceRealm以使用我们自己的实现。我的问题是,在某些情况下,Tomcat REALM似乎没有在DataSourceRealm中调用任何方法,但是从一开始就使身份验证失败。通常,在验证用户身份的同时更改数据库中的密码时,会发生这种情况。使用户无效并尝试再次登录后,无论我尝试使用哪种密码,tomcat都不会让我进入。只有重新启动tomcat才能解决此问题。
将断点放在DataSourceRealm类(扩展类)中,我看到通常tomcat将调用authenticate方法,但在特殊情况下TC根本不会在DataSourceRealm中调用任何东西。为什么是这样?是否有某种缓存?对此没有任何记录。
还有一件事情:将用户名字符更改为大写的很多次都是可行的。因此,我可以以aDmin身份登录,但不能以admin身份登录(使用aDmin登录,它将按预期方式调用DataSourceRealm),这使我确信用户已以某种方式进行了缓存。
最佳答案
如果您在使用基本身份验证时遇到此问题,则浏览器将缓存凭据并尝试再次使用它们。
如果您进行一次身份验证,更改凭据,注销并尝试再次登录,则浏览器将不会再次询问凭据,并且将无法通过。
尝试关闭浏览器并再次打开页面,它应该再次询问登录名和密码。
关于tomcat - Tomcat REALM在某些情况下不进行身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15364209/