2012-05-19 50 views
11

Tôi không nhận được tài liệu redis node.js để sử dụng redis auth.Node.js và Redis Auth

mỗi ví dụ:

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

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

Trong mã của tôi, tôi đã điều sau đây:

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

Đây là lỗi tôi nhận được:

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? 
+0

EADDRINUSE là một điều http - bạn có chắc chắn đây là vấn đề với redis không phải với việc thiết lập máy chủ của bạn không? – ControlAltDel

+0

Tôi đã cập nhật thông báo lỗi – Tampa

+0

Tôi gặp vấn đề tương tự, tôi phát hiện ra mình đã chỉnh sửa cấu hình trên máy chủ khác để yêu cầu mật khẩu và máy chủ tôi đang chạy trên máy chủ dàn dựng của tôi không có 'requirepass $ uP3rs3cretpassW0rd' trong đó ... què! nhưng mọi thứ vẫn hoạt động. – nak

Trả lời

1

Đây là cách chính xác để sử dụng auth.

Tôi tin rằng bạn đang cố gắng sử dụng phiên bản cũ của máy chủ Redis có giao thức không được hỗ trợ bởi node_redis (hoặc ngược lại).

Ngoài ra, bạn có thể không kết nối với cá thể bạn cho là mật khẩu được bảo vệ hoặc bạn chưa đặt mật khẩu trong cấu hình của cá thể bạn nhắm mục tiêu.

Tôi khuyên bạn nên thử kết nối với cá thể bằng redis-cli và sử dụng auth để kiểm tra xác thực (tức là bỏ qua node.js).

+0

Xin chào, tôi đang sử dụng redis2.6. Tôi cũng sử dụng py-redis làm việc với auth. Auth đang làm việc cho mọi khách hàng khác mong đợi cho node.js redis mranney. Ngay cả các công trình rách nát. – Tampa

+0

Nó hoạt động tốt cho tôi. Các phiên bản của node.js và các mô-đun liên quan của bạn (tức là danh sách npm) là gì? Mỏ là v0.6.16 với [email protected] và [email protected] ... –

+0

Nút là v0.6.18. redis là [email protected] – Tampa

0

tôi nghi ngờ bạn và tôi đang gặp vấn đề tương tự. Tôi quản lý để sửa chữa của tôi ở đây, bằng cách thông qua các mô-đun redis chính nó như là một tùy chọn để các nhà xây dựng RedisStore:

Redis auth error with Node.js and socket.io

Nếu không có nó, các mô-đun RedisStore sẽ không nhận ra RedisClient đối tượng bạn đang đi qua trong khi " đúng "đối tượng RedisClient (vì chúng sẽ là lớp redis.RedisClient từ một số khác nhau khác nhau) và RedisStore sẽ tạo lại chúng và mất auth bạn đã đặt.

4

Cũng một lý do khác cho vấn đề này có thể không chỉ định redis.conf của bạn khi khởi động máy chủ redis (nếu bạn đặt "requirepass" trong đó).

Trong trường hợp đó máy chủ redis bắt đầu bằng cấu hình mặc định (nghĩa là không có tùy chọn "requirepass" được bật) và do đó không chấp nhận lệnh AUTH của bạn.

./src/redis-server redis.conf 
Các vấn đề liên quan