2013-08-27 4 views
1

Redis에서 사용자 이름과 비밀번호를 확인하는 데 문제가 있습니다. 사용자 이름과 비밀번호가 정의되지 않았다고 말합니다. NodeJs/ExpressJs에서이 문제를 해결하도록 도와 주셨으면합니다.ExpressJS, NodeJs 및 Redis 단순 로그인 오류

CODE :

var express = require('express'); 
var app = express(); 
var redis = require("redis"), 
client = redis.createClient(); 
var user, pass; 

app.use(express.bodyParser()); 

client.on("error", function (err) { 
console.log("error event - " + client.host + ":" + client.port + " - " + err); 
}); 

app.get('/', function (req, res) { 
res.sendfile(__dirname + '/index.html'); 
}); 

app.post('/', function (req, res) { 
console.log(""); 
console.log("--------------------"); 
console.log(req.body.user.username); 
console.log(req.body.user.password); 

console.log("--------EOF---------"); 
client.hmget(req.body.user.username + user, req.body.user.pasword + pass, 
redis.print); 
if (req.body.user.username && req.body.user.password == user && pass) 
{ 
    res.write("Successfully logged in!"); 
} 
else 
{ 
    res.write("Username or Password is incorrect"); 
} 
console.log("req.body.username: " + req.body.username); 
console.log("req.body.password: " + req.body.password); 
console.log("username: " + user); 
console.log("username: " + pass); 
res.end(); 

}); 

app.listen(80) 

을 app.js 여기 내 index.html을 코드입니다.

된 index.html은

<html> 
<head></head> 
<body> 
<form method="post" action="/"> 

Username: <input type="text" name="user[username]" > <br> 
Password: <input type="text" name="user[password]"> <br> 

<input type="submit" value="Submit"> 
</form> 
</body> 
</html> 
+0

힌트 : Redis 클라이언트가 비동기입니다. 사용자를 채우고 전달하려면 콜백이 필요합니다. –

+0

코드 수정을 도와 줄 수 있습니까? 왜냐하면 나는 그것을 얻지 못한다. (Didier Spezia :) –

답변

0

나는 레디 스 인스턴스가 사용자와 암호 사이의 관계를 포함하는 "자격 증명"라는 해시 객체를 포함한다고 가정 해 봅시다. 다음과 같이

HMSET credentials didier mypass 

내가 포스트 방법을 다시 것 :

app.post('/', function (req, res) { 
    console.log("--------------------"); 
    console.log(req.body.user.username); 
    console.log(req.body.user.password); 
    console.log("--------EOF---------"); 
    client.hmget('credentials', req.body.user.username, function (err,pass) { 
     console.log("req.body.username: " + req.body.user.username); 
     console.log("req.body.password: " + req.body.user.password); 
     console.log("pass: " + pass); 
     console.log("err: " + err); 
     if ((!err) && pass && pass == req.body.user.password) 
      res.write("Successfully logged in!"); 
     else 
      res.write("Username or Password is incorrect"); 
     res.end(); 
    }); 
}); 

를이 코드로, 나는 성공적인 로그인 메시지를 가지고, 다음과 같은 추적 :

-------------------- 
didier 
mypass 
--------EOF--------- 
req.body.username: didier 
req.body.password: mypass 
pass: mypass 
err: null 

이 방법을 유의하시기 바랍니다 자격증 명 및이 인증 메커니즘을 저장하는 것은 완전히 안전하지 않습니다.

관련 문제