Node.js ExpressJS、NodeJs和Redis简单登录错误

Node.js ExpressJS、NodeJs和Redis简单登录错误,node.js,express,redis,Node.js,Express,Redis,我在检查Redis中的用户名和密码时遇到问题,它说用户名和密码未定义。我希望您能帮助我解决NodeJs/ExpressJs中的这个问题 代码: app.js var express = require('express'); var app = express(); var redis = require("redis"), client = redis.createClient(); var user, pass; app.use(express.bodyParser()); client

我在检查Redis中的用户名和密码时遇到问题,它说用户名和密码未定义。我希望您能帮助我解决NodeJs/ExpressJs中的这个问题

代码:

app.js

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)
这是我的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>

用户名:
密码:

我假设Redis实例包含一个名为“credentials”的散列对象,其中包含用户和密码之间的关联

HMSET credentials didier mypass
我将重写post方法,如下所示:

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

请注意,这种存储凭据的方式和这种身份验证机制是完全不安全的。

提示:Redis客户端是异步的。您需要一个回调函数来填充用户并传递。您能帮我修复代码吗?因为我不明白:(谢谢迪迪埃·斯佩齐亚:)