Node.js和Redis Auth

Tam*_*mpa 14 redis node.js

我没有获得redis node.js文档以使用redis auth.

根据这个例子:

var redis = require("redis"),
client = redis.createClient();

// This command is magical. Client stashes the password and will issue on every connect.
client.auth("somepass");
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我有以下内容:

var redis = require("redis");
r = redis.createClient(6379,'xxx.xxx.xxx.xxx');
r.auth("yyyyyyyy");

app.get('/', function(req, res){
r.set("foo", 'bar');
res.writeHead(200, {'Content-Type': 'image/gif'});
res.end('Hello');
 });
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

    Express server listening on port 8070 in development mode

/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:468
                throw callback_err;
                      ^
Error: Auth error: Error: ERR Client sent AUTH, but no password is set
    at Command.callback (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:163:43)
    at RedisClient.return_error (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:464:25)
    at HiredisReplyParser.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:253:14)
    at HiredisReplyParser.emit (events.js:67:17)
    at HiredisReplyParser.execute (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/lib/parser/hiredis.js:41:18)
    at RedisClient.on_data (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:440:27)
    at Socket.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:70:14)
    at Socket.emit (events.js:67:17)
    at TCP.onread (net.js:367:14)
[7]+  Killed                  node app.js 8070


So, what is the proper way to auth?
Run Code Online (Sandbox Code Playgroud)

小智 5

这个问题的另一个原因可能是在启动 redis-server 时没有指定你的 redis.conf (如果你把“requirepass”放在里面)。

在这种情况下,redis 服务器以默认配置启动(即没有启用“requirepass”选项),因此不接受您的 AUTH 命令。

./src/redis-server redis.conf
Run Code Online (Sandbox Code Playgroud)


Did*_*zia 1

这才是auth的正确使用方法。

我相信您正在尝试使用旧版本的 Redis 服务器,其协议不受 node_redis 支持(反之亦然)。

或者,您可能无法连接到您认为受密码保护的实例,或者您尚未在目标实例的配置中设置密码。

我建议您尝试使用 redis-cli 连接到实例并使用 auth 来测试身份验证(即绕过 node.js)。