使用信任模式的Mongodb身份验证在Java中失败

njn*_*jny 7 java authentication mongodb

我有一个在localhost上运行的Mongodb服务器,没有身份验证(测试目的).在我的Java项目中,我已经为其添加了一个身份验证字段(以便用户可以修改配置,如果它处于信任模式,则只需将其留空).问题是,它被拒绝了,在Mongodb中,我得到:

星期六07月15日15:04:17.018 [conn4]字段丢失/收到的authenticat e命令testdb中的错误类型

我知道为什么会这样,但我想不出办法阻止它.它发生的原因是因为如果授权失败或者验证测试已经使用不同的凭据成功,db.authenticate()将返回false.在mongodb控制台中,我在上面的错误之前得到了这个:

星期六07月07日15:04:17.010 [initandlisten]连接从127.0.0.1:53602#4接受(现已打开2个连接)

其中一个连接是我的shell,另一个是项目.这是我的Java代码:

boolean auth =
db.authenticate(getConfig().getString("Database.username", ""),
getConfig().getString("Database.password", "").toCharArray());
        if (!db.isAuthenticated() && auth == false) {
                // Stop the application
        }
Run Code Online (Sandbox Code Playgroud)

我必须阻止它以防止控制台变得丑陋.我不明白为什么:

!db.isAuthenticated()
Run Code Online (Sandbox Code Playgroud)

不行.这应该已经阻止了它的禁用.如果有人可以提供帮助,那就太好了!

Ben*_*ard 0

我遇到了这个问题,并通过在应用程序属性中替换这些内容来修复它:

spring.data.mongodb.database=test
spring.data.mongodb.host=localhost
spring.data.mongodb.password=
spring.data.mongodb.port=27017
spring.data.mongodb.username=
Run Code Online (Sandbox Code Playgroud)

和:

spring.data.mongodb.uri=mongodb://localhost/test
Run Code Online (Sandbox Code Playgroud)