Redis和NodeJs - 无法授权用户

时间:2011-12-01 14:16:59

标签: node.js redis

好的,我放弃了。

我尝试过很多东西来创建一个简单的登录表单。表单本身呈现正常,只是处理POST数据是错误的: - )

我有一个带有一些键的Redis数据库。首先,有users集合,其中包含用户列表(目前只有用户:admin)。其次,只有密码的h user:admin。请参阅下面的屏幕。

Redis screenshot

使用以下代码,当我提交表单时,它不会进入redis'调用的回调函数:

var username = req.body.username;
var password = req.body.password;
// Now, check if the user he entered exists
client.sismember(['users', 'user:' + username], function(err, reply) {
  // IT NEVER GETS THERE
  if (reply) {
    // If he does, check if the password matches
    client.hget(['user:' + username, 'password'], function(err, reply) {
      if (reply === password) {
        // If the password matches, add the session and redirects to home
        req.session.username = username;
        res.redirect('/home');
      }
      else {
        options.error = "Password do not match.";
        res.render('guest', options);
      }
    });
  }
  else {
    options.error = "Username does not exist.";
    res.render('guest', options);
  }
});

我已经使用console.log检查了一些内容,usernamepassword已经填好了。

关于redis服务器连接没有任何错误(如果我关闭服务器,我就没有错误),所以问题不存在。

我尝试过使用client.send_command(),但没有改变。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

好的,答案非常愚蠢。我的意思是,我没有看到这个是愚蠢的。

这种异步性质使得完全变得非常困难!

问题是,稍后,在代码中,最后,我关闭了与client.end()的redis连接。

但是在回调被触发之前调用了这个函数,即使它在代码之后很好。