使用身份验证用户名/密码nodejs连接到托管redis

wpx232ag  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(835)

编辑:在考虑了这个问题之后,真正的问题是,使用tls连接digitalocean的托管redis和节点redis的示例是什么?
我可以使用用户名/密码与redisinsight gui客户端连接,但无法与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\u redis的文档没有提供在身份验证期间提供用户名的方法。
错误是: AbortError: Redis connection lost and command aborted. It might have been processed. 这是我的工作轻微匿名redisinsight连接屏幕。
如何在节点redis中执行相同的操作?

pdtvr36n

pdtvr36n1#

这个 AUTH 命令,如文件所述:
使用acl时,命令的单参数形式(仅指定密码)假定隐式用户名为“default”。
因此,即使您使用的是支持其他用户的redis 6,您的身份验证 default 应该有用。
您看到的错误是由于连接中断造成的,例如,您不知何故与redis服务器失去了连接。 node-redis 正在处理两种情况之一(或两者兼有)-连接已超时或重新连接尝试次数已超过配置中指定的最大次数。我会仔细检查你的连接信息和你的redis服务器是如何配置的。
我看到您正在使用tls,您可能会发现这很有用:保护节点redis
如果您想用不同的用户对节点redis客户端进行身份验证,那么在使用redis 6时,必须使用 send_command ,但在您需要删除当前 AUTH 命令,因为当前节点redis不支持新命令 AUTH <username> <password> .

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

相关问题