mongo db.auth java 驱动_使用Java 3.0驱动程序检查MongoDB身份验证

小编典典

MongoClient构造函数不会引发任何与连接相关的异常。相反,它们在启动一个或多个尝试建立连接并基于提供的凭据进行身份验证的后台线程后立即返回。

仅当应用程序使用MongoClient在MongoDB服务器上执行某些操作时,才会引发异常。但是,该异常是通用超时异常,指示驱动程序在服务器选择超时到期之前未能找到适合该操作的服务器。例如:

MongoClient client = new MongoClient(asList(new ServerAddress("localhost"), new ServerAddress("localhost:27018")),

singletonList(MongoCredential.createCredential("username",

"admin",

"bad".toCharArray())),

MongoClientOptions.builder().serverSelectionTimeout(1000).build());

try {

client.getDB("admin").command("ping");

} catch (MongoTimeoutException e) {

// do something

}

1秒后将引发MongoTimeoutException。虽然未引发MongoSecurityException,但MongoTimeoutException的消息将包含相关详细信息。例如,当其中一台服务器关闭时连接到三个成员的副本集时,其余两个服务器均未通过身份验证,则MongoTimeoutException的消息字段将类似于:

等待与ReadPreferenceServerSelector {readPreference =

primary}匹配的服务器时,在1000毫秒后超时。群集状态的客户端视图是{java.net。} {type = UNKNOWN,服务器=

[{address = localhost:27017,type = UNKNOWN,state = CONNECTING,exception =

{com.mongodb.MongoSocketOpenException:异常打开套接字}}。

ConnectException:连接被拒绝}},{地址=本地主机:27018,类型=未知,状态=连接,异常=

{com.mongodb.MongoSecurityException:认证MongoCredential {mechanism =

null,userName =’username’,source

=’admin’的异常,由{com.mongodb.MongoCommandException引起的,密码=,机制属性=

{}}}:命令失败,错误18:“身份验证失败”。在服务器localhost:27018上。完整的响应为{“ ok”:0.0,“ code”:18,“

2020-11-01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值