Tomcat REALM在某些情况下不进行身份验证

问题描述:

我正在使用Tomcat 7和Realm进行使用JDBC进行身份验证。我扩展了DataSourceRealm来使用我们自己的实现。我的问题是,在某些情况下,似乎Tomcat REALM不会调用DataSourceRealm中的任何方法,但从一开始就无法进行身份验证。这通常发生在用户通过身份验证时更改数据库中的密码。无效用户并尝试再次登录后,无论使用什么密码,tomcat都不让我进入。只有重新启动tomcat才能解决这个问题。Tomcat REALM在某些情况下不进行身份验证

将断点放入DataSourceRealm类(扩展的类)我发现通常tomcat将调用authenticate方法,但在特殊情况下,TC根本不会调用DataSourceRealm中的任何内容。为什么是这样?有没有某种缓存?这方面没有任何记录。

还有一件事:很多时候将用户名字符改为大写字母都可以。所以我可以以aDmin身份登录,但不能以管理员身份登录(使用aDmin,它会按预期调用DataSourceRealm),这使我确信用户以某种方式被缓存。

+0

请检查'catalina'文件。我认为发生了一个例外。之后,让我知道例外。 – boomz 2013-03-31 21:01:34

如果您遇到了基本身份验证的问题,那就是浏览器,它会缓存凭据并尝试再次使用它们。

如果您进行一次身份验证,更改凭证,注销并尝试再次登录,浏览器将不会再次询问凭据并且无法通过。

尝试关闭浏览器并再次打开页面,它应该再次询问登录名和密码。