Herstellen einer Verbindung zu verwalteten Redis mit auth Benutzername / Passwort nodejs

Aug 15 2020

Bearbeiten: Nachdem Sie über das Problem nachgedacht haben, ist die eigentliche Frage, was ein Beispiel für die Verbindung zu den von Digitalocean verwalteten Redis mit Node-Redis mithilfe von TLS ist.

Ich kann mit dem redisinsight GUI-Client über Benutzername / Passwort eine gute Verbindung herstellen, aber keine Verbindung mit nodejs herstellen. Es befindet sich auf demselben Computer, sodass keine Firewall-Probleme auftreten.

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')
});

Eine Sache, die mich verwirrt, ist, wo ich den Benutzernamen eingeben soll. Es ist nur 'Standard', aber die Dokumentation für node_redis bietet keine Möglichkeit, während der Authentifizierung einen Benutzernamen anzugeben.

Fehler ist: AbortError: Redis connection lost and command aborted. It might have been processed.

Hier ist mein leicht anonymisierter Redisinsight-Verbindungsbildschirm.

Wie mache ich dasselbe in Node-Redis?

Antworten

2 LeoMurillo Aug 16 2020 at 07:36

Der AUTHBefehl, wie in den Dokumenten angegeben :

Wenn ACLs verwendet werden, wird in der Einzelargumentform des Befehls, in der nur das Kennwort angegeben ist, davon ausgegangen, dass der implizite Benutzername "Standard" ist.

Selbst wenn Sie Redis 6 verwenden, bei dem zusätzliche Benutzer unterstützt werden, sollte Ihre Authentifizierung für defaultfunktionieren.

Der Fehler, den Sie sehen, ist das Ergebnis einer unterbrochenen Verbindung , z. B. dass Sie die Verbindung zum Redis-Server irgendwie verloren haben. node-redisEs handelt sich um eines von zwei Szenarien (oder beides) - die Verbindung ist abgelaufen oder die Wiederverbindungsversuche haben die in einer Konfiguration angegebene maximale Anzahl überschritten. Ich würde Ihre Verbindungsinformationen und die Konfiguration Ihres Redis-Servers überprüfen.

Ich sehe, dass Sie TLS verwenden. Dies ist möglicherweise hilfreich: Sichern von Node Redis

Wenn Sie den Node-Redis-Client bei einem anderen Benutzer authentifizieren möchten, müssen Sie bei Verwendung von Redis 6 den aktuellen Befehl verwenden send_command, bevor Sie den aktuellen Befehl entfernen müssenAUTH , da Node-Redis den neuen Befehl derzeit nicht unterstützt AUTH <username> <password>.

client['auth'] = null;
client.send_command('AUTH', ['<username>', '<password>'], redis.print);