I dont get the redis node.js documentation for using redis auth.
per the example:
var redis = require("redis"),
client = redis.createClient();
// This command is magical. Client stashes the password and will issue on every connect.
client.auth("somepass");
In my code I have the following:
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');
});
Here is the error I get:
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?
Also another reason for this problem might be not specifying your redis.conf when starting redis-server (if you put "requirepass" in it).
In that case redis server starts with default configuration (i.e. without "requirepass" option enabled) and therefore doesn't accept your AUTH command.
./src/redis-server redis.conf
This is the correct way to use auth.
I believe you are trying to use an old version of Redis server whose protocol is not supported by node_redis (or vice versa).
Alternatively, you might not connect to the instance you think is password protected, or you have not set a password in the configuration of the instance you target.
I suggest you try to connect to the instance using redis-cli and use auth to test authentication (i.e. bypassing node.js).
I found someone else with the same problem looking under the redis auth documentation
You might want to follow up from there
I suspect you and I are having the same problem. I managed to fix mine here, by passing the redis module itself as an option to the RedisStore constructor:
Redis auth error with Node.js and socket.io
Without it, the RedisStore module won't recognize the RedisClient objects you're passing in as "true" RedisClient objects (because they'll be a redis.RedisClient class from a different redis), and RedisStore will recreate them and lose the auth you set.