修复写入MongoDB时的权限认证bug

This commit is contained in:
Kevin-Gallagher 2022-03-24 14:53:21 +08:00
parent ef84593760
commit d569a93ad6
2 changed files with 21 additions and 3 deletions

View File

@ -25,6 +25,10 @@ public class KeyConstant {
* mongodb 数据库名
*/
public static final String MONGO_DB_NAME = "dbName";
/**
* mongodb 验证数据库
*/
public static final String MONGO_AUTHDB = "authDb";
/**
* mongodb 集合名
*/

View File

@ -29,6 +29,9 @@ public class MongoDBWriter extends Writer{
public static class Job extends Writer.Job {
private Configuration originalConfig = null;
private MongoClient mongoClient;
private String userName = null;
private String password = null;
@Override
public List<Configuration> split(int mandatoryNumber) {
@ -42,6 +45,15 @@ public class MongoDBWriter extends Writer{
@Override
public void init() {
this.originalConfig = super.getPluginJobConf();
this.userName = originalConfig.getString(KeyConstant.MONGO_USER_NAME);
this.password = originalConfig.getString(KeyConstant.MONGO_USER_PASSWORD);
String database = originalConfig.getString(KeyConstant.MONGO_DB_NAME);
String authDb = originalConfig.getString(KeyConstant.MONGO_AUTHDB, database);
if(!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) {
this.mongoClient = MongoUtil.initCredentialMongoClient(this.originalConfig,userName,password,authDb);
} else {
this.mongoClient = MongoUtil.initMongoClient(this.originalConfig);
}
}
@Override
@ -64,6 +76,7 @@ public class MongoDBWriter extends Writer{
private String userName = null;
private String password = null;
private String authDb = null;
private String database = null;
private String collection = null;
@ -320,8 +333,9 @@ public class MongoDBWriter extends Writer{
this.userName = writerSliceConfig.getString(KeyConstant.MONGO_USER_NAME);
this.password = writerSliceConfig.getString(KeyConstant.MONGO_USER_PASSWORD);
this.database = writerSliceConfig.getString(KeyConstant.MONGO_DB_NAME);
this.authDb = writerSliceConfig.getString(KeyConstant.MONGO_AUTHDB, database);
if(!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) {
this.mongoClient = MongoUtil.initCredentialMongoClient(this.writerSliceConfig,userName,password,database);
this.mongoClient = MongoUtil.initCredentialMongoClient(this.writerSliceConfig,userName,password,authDb);
} else {
this.mongoClient = MongoUtil.initMongoClient(this.writerSliceConfig);
}