使用Spring Data,我正在尝试获取具有用户名和密码凭据的Mongo对象。
我需要以编程方式设置它,而不是使用XML
我找到的所有示例都使用了已弃用的系统。我正在寻找目前这样做的方法。
这是我到目前为止所做的:
MongoClient connection = new MongoClient(host, port);
List<MongoCredential> credentialsList = connection.getCredentialsList();
credentialsList.add(MongoCredential.createCredential(
userName,
getDatabaseName(),
password.toCharArray()
));
我真的不想在这里设置数据库,因为Spring Data已经在其他地方处理过了,但是我没有办法在没有它的情况下获取MongoCredentials对象。
无论如何,无法找到一个好的例子,或者我能理解的文档,这是我最好的猜测方法。但是,它不起作用。当使用连接时,它会抛出exception is com.mongodb.MongoException: not authorized for query
我必须丢失一些东西,无论是我不知道的OpenShift要求,还是我的凭证代码中的缺陷。
答案 0 :(得分: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));
这需要至少版本为2.13的Java MongoDB驱动程序
以下是我最终使用的pom.xml中的部分:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.1</version>
</dependency>