最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

同样Redis的密码与Redis的客户端工作失败的Node.js createClient()方法?

运维笔记admin9浏览0评论

同样Redis的密码与Redis的客户端工作失败的Node.js createClient()方法?

同样Redis的密码与Redis的客户端工作失败的Node.js createClient()方法?

我有一个Node.js的版本10.4.2运行Redis的服务器。我现在用的是故宫“redis的”客户与我的应用程序。我使用下面的代码来创建Redis的客户端和验证。 (注注释掉下面来看看还有什么我试过的代码):

var redis = require("redis");
// var redisClient = require('redis').createClient(process.env.REDIS_URL || redis);
var redisClient = redis.createClient(
    {
        port: process.env.REDIS_PORT,
        host: process.env.REDIS_URL,
        no_ready_check: true,
        auth_pass: process.env.REDIS_AUTH
    });

/*
// Authenticate with Redis.
redisClient.auth(process.env.REDIS_AUTH, function(err, reply) {
    if (err) {
        console.error(err);
    }
    else {
        console.log(reply);
    }
});
*/

不过,我总是得到如下错误:

ReplyError: ERR invalid password

当我使用的是被注释掉的代码的时候,我并没有createClient过程中使用“no_ready_check”属性()。一些事实:

  • 我三重检查了process.env.REDIS_AUTH的价值和它匹配到底是什么在为requirepass密码值我的Redis服务器的conf文件。
  • 我可以使用密码使用Redis的命令行客户端(Redis的-CLI)进行测试时,认证成功,所以我知道Redis的服务器是密码保护和密码的作品。
  • 我知道密码通过,因为当我使用的是被注释掉的代码,我可以传递给回调函数的参数看正确的密码获得。

为什么我的密码,我的Node.js代码的工作,我该如何解决这一问题?请注意,在Linux上使用SSL随机密码生成器生成的密码。我提到的情况下,它会影响什么。

更新:我在Redis的服务器的conf文件中使用更短的密码,得到了这个工作。显然Node.js的Redis的包不喜欢被Linux SSL实用程序生成的长的随机密码,尽管在所有有是在那些没有密码奇怪的字符。我贴在这里上的包回购这一主题的问题:

回答如下:

我用的是下面的命令来创建我的Linux系统中使用OpenSSL的密码:

openssl rand 60 | openssl base64 -A

不幸的是openssl创建密码以向前斜杠他们“/”。可能有其他字符都没有在这方面健康,但我还没有彻底测试它们。一旦我删除了前从密码斜线,和我重新启动Redis的服务器注册更改后,客户端试图建立从Node.js的工作

有什么东西在Node.js的一侧发生在道路上的Redis的这些字符。正如我所说,我没有问题的时候直接粘贴含有密码到Redis的客户端使用auth命令时非常相同的正斜杠。但是,使用它们的Node.js促使验证尝试失败。

我最好的人阅读这篇文章的建议是,如果你正在使用OpenSSL的命令生成您的Node.js应用Redis的密码,删除任何字符是不从严从生成的密码“A-ZA-Z”。也许有人会后作为回复给一个更好的解决方案。

发布评论

评论列表(0)

  1. 暂无评论