使用Java连接到MongoDB服务器实例期间的身份validation

有可能做出类似的东西:

MongoClient mongo = new MongoClient(ip, port, usrName, password) 

在JAVA中类似于MongoVUE或其他基于SQL的数据库的身份validation方法。

在连接到数据库实例期间完成身份validation。

我在MongoClient java doc中没有看到合适的实例方法

身份validation方式(可选)官方文档

不符合我的目标,因为它需要更改我的应用程序中现在不使用身份validation的所有现有查询方法。

使用Java驱动程序对MongoDB进行身份validation的方式看起来正是我所需要的,但mongo 2.10.1发行版中没有com.mongodb.MongoCredential类。

您不需要更改所有现有查询,只需要更改建立MongoClient的逻辑。 大多数应用程序将此作为某种Singleton执行此操作,因此添加身份validation只需修改Singleton。 这是一个痛苦的事实,没有一个签名只需要String,字符串作为用户名密码,但它的Mongo Java API,习惯了失望。

你可以去MongoURI路径,它可以让你获得最短的签名……

 MongoClient mongo = new MongoClient( new MongoClientURI( "mongodb://app_user:bestPo55word3v3r@localhost/data" ) ); 

或者使用更详细的List 路径

 List seeds = new ArrayList(); seeds.add( new ServerAddress( "localhost" ); List credentials = new ArrayList(); credentials.add( MongoCredential.createMongoCRCredential( "app_user", "data", "bestPo55word3v3r".toCharArray() ) ); MongoClient mongo = new MongoClient( seeds, credentials ); 

根据Bob Kuhar接受的答案,在Mongo3中,机制已从质询响应更改为SHA1,如代码段所示。 我需要更新代码段,如下所示:

 ... import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; ... // Manage the mongo db connection... List seeds = new ArrayList(); seeds.add( new ServerAddress(configuration.getMongoHost(), configuration.getMongoPort() )); List credentials = new ArrayList(); credentials.add( MongoCredential.createScramSha1Credential( configuration.getMongoUser(), configuration.getMongoDb(), configuration.getMongoPassword().toCharArray() ) ); MongoClient mongo = new MongoClient( seeds, credentials );