2

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

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

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

4

1 回答 1

0

如果您在使用基本身份验证时遇到此问题,则浏览器会缓存凭据并尝试再次使用它们。

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

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

于 2013-03-16T21:44:57.977 回答