Node.js和Redis身份validation

我没有得到使用redis auth的redis node.js文档。

每个例子:

var redis = require("redis"), client = redis.createClient(); // This command is magical. Client stashes the password and will issue on every connect. client.auth("somepass"); 

在我的代码中,我有以下几点:

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

这是我得到的错误:

  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? 

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

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

 ./src/redis-server redis.conf 

这是使用身份validation的正确方法。

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

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

我build议你尝试使用redis-cli连接到实例,并使用auth来testing身份validation(即绕过node.js)。

我在redis auth文档下发现了一些与之相同的问题

http://redis.io/commands/auth

你可能想从那里跟进

我怀疑你和我有同样的问题。 我设法通过将Redis模块本身作为RedisStore构造函数的一个选项传递给我,

Redisauthentication错误与Node.js和socket.io

没有它,RedisStore模块将不能识别你传入的RedisClient对象为“true”RedisClient对象(因为它们将是来自不同 redis的redis.RedisClient类),并且RedisStore将重新创build它们并失去auth你设置。