【问题标题】:Spring Data MongoDB CredentialsSpring Data MongoDB 凭证
【发布时间】:2015-07-02 10:12:00
【问题描述】:

使用 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 要求,要么是我的凭据代码中的缺陷。

【问题讨论】:

  • 或者不推荐使用的示例正是我想要的,因为 OpenShift 使用 MongoDB 2.4,而不是 3

标签: java spring mongodb openshift spring-data


【解决方案1】:

我能够使用此代码使其工作:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多