Spring 数据 MongoDB 凭据
Spring Data MongoDB Credentials
使用 Spring 数据,我正在尝试获取具有用户名和密码凭据的 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 要求,要么是我的凭据代码中存在缺陷。
我能够使用这段代码让它工作:
ServerAddress serverAddress = new ServerAddress(
environmentHost, Integer.parseInt(environmentPort));
MongoCredential credential = MongoCredential.createCredential(
environmentUserName,
getDatabaseName(),
environmentPassword.toCharArray());
MongoClient client = new MongoClient(
serverAddress, Arrays.asList(credential));
这需要 Java MongoDB 驱动程序至少版本 2.13
这是我 pom.xml 中我最终使用的部分:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.1</version>
</dependency>
使用 Spring 数据,我正在尝试获取具有用户名和密码凭据的 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 要求,要么是我的凭据代码中存在缺陷。
我能够使用这段代码让它工作:
ServerAddress serverAddress = new ServerAddress(
environmentHost, Integer.parseInt(environmentPort));
MongoCredential credential = MongoCredential.createCredential(
environmentUserName,
getDatabaseName(),
environmentPassword.toCharArray());
MongoClient client = new MongoClient(
serverAddress, Arrays.asList(credential));
这需要 Java MongoDB 驱动程序至少版本 2.13
这是我 pom.xml 中我最终使用的部分:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.1</version>
</dependency>