Spring Data MongoDB凭证

Don*_*ert 2 java spring mongodb spring-data openshift

使用Spring Data,我试图获取具有用户名和密码凭据的Mongo对象.

我需要以编程方式设置它,而不是使用XML

我发现的所有示例都使用了已弃用的系统.我正在寻找目前的方法来做到这一点.

这是我到目前为止:

MongoClient connection = new MongoClient(host, port);
List<MongoCredential> credentialsList = connection.getCredentialsList();
credentialsList.add(MongoCredential.createCredential(
          userName,
          getDatabaseName(),
          password.toCharArray()
));
Run Code Online (Sandbox Code Playgroud)

我真的不想在这里设置数据库,因为Spring Data已经在其他地方处理过了,但我没有看到没有它的方法来获取MongoCredentials对象.

无论如何,无法找到一个好的例子,或者我能理解的文档,这是我最好的猜测方法.但是,它不起作用.当使用连接时,它会抛出exception is com.mongodb.MongoException: not authorized for query我必须丢失的东西,无论是我不知道的OpenShift要求,还是我的凭证代码中的缺陷.

Don*_*ert 6

我能够使用此代码:

ServerAddress serverAddress = new ServerAddress(
                environmentHost, Integer.parseInt(environmentPort));

MongoCredential credential = MongoCredential.createCredential(
                environmentUserName,
                getDatabaseName(),
                environmentPassword.toCharArray());

MongoClient client =  new MongoClient(
                serverAddress, Arrays.asList(credential));
Run Code Online (Sandbox Code Playgroud)

这需要至少版本为2.13的Java MongoDB驱动程序

这是我最终使用的pom.xml中的部分:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>2.13.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)