我正在使用 Tomcat 7 和 Realm 使用 JDBC 进行身份验证。我扩展了 DataSourceRealm 以使用我们自己的实现。我的问题是,在某些情况下,Tomcat REALM 似乎没有调用 DataSourceRealm 中的任何方法,但从一开始就未能通过身份验证。这通常发生在用户通过身份验证时更改数据库中的密码时。在使用户无效并尝试再次登录后,无论我尝试使用什么密码,tomcat 都不会让我进入。只有重新启动 tomcat 才能解决此问题。
在 DataSourceRealm 类(扩展类)中放置断点我看到通常 tomcat 会调用 authenticate 方法,但在特殊情况下,TC 根本不会调用 DataSourceRealm 中的任何内容。为什么是这样?有某种缓存吗?对此没有任何记录。
还有一件事:多次将用户名字符更改为大写将起作用。所以我可以以管理员身份登录,但不能以管理员身份登录(使用 aDmin 它将按预期调用 DataSourceRealm),这让我确信用户以某种方式被缓存。