【发布时间】:2020-09-29 12:44:32
【问题描述】:
我最终想要实现的是,从java类连接mongo db,这个配置应该适用于MongoTemplate和MongoRepository
spring boot 通过 application.properties 文件通过以下属性直接提供 mongodb 的配置
spring.data.mongodb.database=delivery
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.password=delivery-user
spring.data.mongodb.username=delivery-user
我需要使用 java 类本身连接到数据库,而不是这种方式, 这是因为我需要在属性文件中加密密码,然后从 java 类中解密 据我了解,我尝试在下面创建一个类
@Configuration
public class MongoConfig extends AbstractMongoClientConfiguration {
@Override
public MongoClient mongoClient() {
String username = "delivery-user";
String password = "delivery-user";
String port = "27017";
String host = "localhost";
String db = "salesdata";
//have also tried by passing db name in conString
String conString = "mongodb://" + username + ":" + password + "@" + host + ":" + port+"/?authSource=admin" ;
MongoClient mClient = MongoClients.create(conString);
return mClient;
}
@Override
protected String getDatabaseName() {
return "delivery";
}
@Bean
@Override
public MongoTemplate mongoTemplate() {
MongoTemplate mt = new MongoTemplate(mongoClient(), getDatabaseName());
return mt;
}
}
运行此应用程序时出现此错误
Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='delivery-user', source='admin', password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='delivery-user', source='admin', password=<hidden>, mechanismProperties={}}
用户名和密码正确,用户也可以访问“delivery”数据库
【问题讨论】:
标签: java spring spring-boot spring-data-mongodb