Conectando-se ao redis gerenciado com o nome de usuário / senha auth nodejs
Edit: Depois de pensar sobre o problema, a verdadeira questão é: qual é um exemplo de conexão com o redis gerenciado do digitalocean com o node-redis usando tls?
Consigo me conectar perfeitamente com o cliente GUI do redisinsight usando nome de usuário / senha, mas não consigo me conectar com nodejs. Está no mesmo computador, sem problemas de firewall.
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')
});
Uma coisa que estou confuso é onde inserir o nome de usuário. É apenas 'padrão', mas a documentação para node_redis não fornece uma maneira de fornecer um nome de usuário durante a autenticação.
O erro é: AbortError: Redis connection lost and command aborted. It might have been processed.
Esta é a minha tela de conexão redisinsight levemente anônima.
Como faço o mesmo no node-redis?
Respostas
O AUTH
comando, conforme declarado nos documentos :
Quando ACLs são usados, a forma de argumento único do comando, onde apenas a senha é especificada, assume que o nome de usuário implícito é "padrão".
Portanto, mesmo se você estiver usando o Redis 6, onde usuários adicionais são suportados, sua autenticação para default
deve funcionar.
O erro que você está vendo é o resultado de uma conexão interrompida , por exemplo, você perdeu a conexão com o servidor Redis. node-redis
está lidando com um de dois cenários (ou ambos) - o tempo limite da conexão expirou ou as tentativas de reconexão excederam o número máximo especificado em uma configuração. Gostaria de verificar suas informações de conexão e como o servidor redis está configurado.
Vejo que você está usando TLS, mas isso pode ser útil: Protegendo o Node Redis
Se você quiser autenticar o cliente node-redis com um usuário diferente, ao usar o Redis 6, você terá que usar send_command
, mas antes de remover o AUTH
comando atual , já que atualmente o node-redis não suporta o novo comando AUTH <username> <password>
.
client['auth'] = null;
client.send_command('AUTH', ['<username>', '<password>'], redis.print);