我有一个在本地主机上运行的 Mongodb 服务器,没有身份验证(测试目的)。在我的 Java 项目中,我添加了一个身份验证字段(以便用户可以修改配置,如果它处于信任模式,只需将其留空)。问题是,它被拒绝了,在 Mongodb 中,我得到:
Sat Sep 07 15:04:17.018 [conn4] 收到的验证命令 testdb 中的字段缺失/类型错误
我知道为什么会发生这种情况,但我想不出办法来阻止它。发生这种情况的原因是,如果授权失败或身份验证测试已经使用不同的凭据成功,则 db.authenticate() 返回 false。在 mongodb 控制台中,我在上面的错误之前得到了这个:
Sat Sep 07 15:04:17.010 [initandlisten] 接受来自 127.0.0.1:53602 #4 的连接(现在打开 2 个连接)
其中一个连接是我的外壳,另一个是项目。这是我的Java代码:
boolean auth =
db.authenticate(getConfig().getString("Database.username", ""),
getConfig().getString("Database.password", "").toCharArray());
if (!db.isAuthenticated() && auth == false) {
// Stop the application
}
我必须阻止它以防止控制台变得丑陋。我不明白为什么:
!db.isAuthenticated()
不工作。那应该阻止它禁用。如果有人可以提供帮助,那就太好了!