Fix can't authenticate by username and password when use Nacos (#9941)

#9910
This commit is contained in:
Wu Xuecheng 2022-06-14 14:14:00 +08:00 committed by GitHub
parent 8d9e252ff1
commit 9efe21af84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -52,7 +52,9 @@ import java.util.concurrent.Executor;
import java.util.stream.Stream;
import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE;
import static com.alibaba.nacos.api.PropertyKeyConst.PASSWORD;
import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;
import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
import static java.util.Collections.emptyMap;
import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of;
@ -143,6 +145,12 @@ public class NacosDynamicConfiguration implements DynamicConfiguration {
private static void setProperties(URL url, Properties properties) {
// Get the parameters from constants
Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));
if (StringUtils.isNotEmpty(url.getUsername())){
properties.put(USERNAME, url.getUsername());
}
if (StringUtils.isNotEmpty(url.getPassword())){
properties.put(PASSWORD, url.getPassword());
}
// Put all parameters
properties.putAll(parameters);
}

View File

@ -37,7 +37,9 @@ import java.util.Map;
import java.util.Properties;
import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;
import static com.alibaba.nacos.api.PropertyKeyConst.PASSWORD;
import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;
import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
import static com.alibaba.nacos.api.common.Constants.DEFAULT_GROUP;
import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME;
import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
@ -150,7 +152,12 @@ public class NacosNamingServiceUtils {
Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));
// Put all parameters
properties.putAll(parameters);
if (StringUtils.isNotEmpty(url.getUsername())){
properties.put(USERNAME, url.getUsername());
}
if (StringUtils.isNotEmpty(url.getPassword())){
properties.put(PASSWORD, url.getPassword());
}
putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, "true");
}