【问题标题】:Connect to MongoDB with credentials - Micronaut使用凭据连接到 MongoDB - Micronaut
【发布时间】:2019-10-02 23:46:29
【问题描述】:

我们正在使用 Micronaut 构建一个网络应用程序。该应用程序需要凭据才能连接到托管 MongoDB 服务。我从documentation 看到,这可以使用下面给出的application.xml 属性来完成,

mongodb:
    uri: mongodb://username:password@localhost:27017/databaseName

但是,这里的凭据作为配置属性本身的一部分进行维护。

在我们的场景中,凭据存储在加密存储中,需要在建立与 MongoDB 的连接之前对其进行读取。

有没有办法在 MongoClient 实例化期间注入凭据,以便注入的凭据可用于连接到托管 MongoDB 实例?

我们正在使用micronaut-mongo-reactive 客户端。

【问题讨论】:

  • 可以将用户名和密码设置为环境变量吗?

标签: mongodb micronaut


【解决方案1】:

如果这对任何人有帮助,以下方法有效!

使用@Replaces 注释创建一个新工厂,允许覆盖 MongoClient 的默认注入。在这个类中,从加密存储中读取凭据,然后使用它来制定 Mongo 连接字符串

@Factory
public class MongoClientFactory {

  private static final FluentLogger logger = FluentLogger.forEnclosingClass();

  @Inject EncryptedStoreService encryptedStoreService;

  @Singleton
  @Bean(preDestroy = "close")
  @Replaces(MongoClient.class)
  public MongoClient mongoClient() {

    MongoClient mongoClient = null;
    try {

    // Formulate a ConnectionString based on data read using the encryptedStoreService

      mongoClient = MongoClients.create(connectionString);

    } catch (IOException e) {
      logger.atSevere().log("Error occured", e);
    }

    return mongoClient;
  }
 } 

爱 Micronaut !!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2023-03-10
    • 2018-08-11
    相关资源
    最近更新 更多