Подключение к управляемому Redis с именем пользователя / паролем auth nodejs
Изменить: подумав об этой проблеме, реальный вопрос заключается в том, каков пример подключения к управляемому redis digitalocean с помощью node-redis с использованием tls?
Я могу нормально подключиться к клиенту графического интерфейса Redisinsight, используя имя пользователя / пароль, но не могу подключиться к nodejs. Он находится на том же компьютере, поэтому проблем с брандмауэром нет.
var redis = require('redis');
var client = redis.createClient(process.env.REDIS_PORT, process.env.REDIS_URL, {no_ready_check: true});
client.auth('password', function (err) {
if (err) {
console.log(err);
return
}
console.log('auth')
});
Я не совсем понимаю, где вводить имя пользователя? Это просто "по умолчанию", но документация для node_redis не предоставляет способ указать имя пользователя во время аутентификации.
Ошибка: AbortError: Redis connection lost and command aborted. It might have been processed.
Вот мой рабочий слегка анонимный экран подключения Redisinsight.
Как мне сделать то же самое в node-redis?

Ответы
Команда AUTH
, как указано в документации :
Когда используются списки управления доступом, форма команды с одним аргументом, где указан только пароль, предполагает, что неявное имя пользователя является "по умолчанию".
Так что даже если вы используете Redis 6, где поддерживаются дополнительные пользователи, ваша аутентификация default
должна работать.
Ошибка, которую вы видите, является результатом разрыва соединения , например, вы каким-то образом потеряли соединение с сервером Redis. node-redis
имеет дело с одним из двух сценариев (или с обоими) - время ожидания соединения истекло или количество попыток повторного подключения превысило максимальное количество, указанное в конфигурации. Я бы дважды проверил информацию о вашем подключении и настройку вашего сервера Redis.
Я вижу, вы используете TLS, это может вам пригодиться: Защита узла Redis
Если вы хотите аутентифицировать клиента node-redis с другим пользователем, при использовании Redis 6 вам придется использовать send_command
, но до того, как вам нужно будет удалить текущую AUTH
команду, поскольку в настоящее время node-redis не поддерживает новую команду AUTH <username> <password>
.
client['auth'] = null;
client.send_command('AUTH', ['<username>', '<password>'], redis.print);