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

rok*_*rok 6 java authentication mongodb mongovue

有可能做出类似的东西:

MongoClient mongo = new MongoClient(ip, port, usrName, password)
Run Code Online (Sandbox Code Playgroud)

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

在连接到数据库实例期间完成身份验证.

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

身份验证方式(可选)官方文档

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

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

Bob*_*har 25

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

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

MongoClient mongo = new MongoClient(
  new MongoClientURI( "mongodb://app_user:bestPo55word3v3r@localhost/data" )
);
Run Code Online (Sandbox Code Playgroud)

或者使用更详细的List <MongoCredential>路径

List<ServerAddress> seeds = new ArrayList<ServerAddress>();
seeds.add( new ServerAddress( "localhost" );
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(
    MongoCredential.createMongoCRCredential(
        "app_user",
        "data",
        "bestPo55word3v3r".toCharArray()
    )
);
MongoClient mongo = new MongoClient( seeds, credentials );
Run Code Online (Sandbox Code Playgroud)