当前位置:  开发笔记 > 编程语言 > 正文

Redis和NodeJs - 无法授权用户

如何解决《Redis和NodeJs-无法授权用户》经验,为你挑选了1个好方法。

好的,我放弃了.

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

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

Redis截图

使用以下代码,当我提交表单时,它不会进入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检查了一些东西,username并且password已经填好了.

关于redis服务器连接没有任何错误(如果我关闭服务器,我有这个错误),所以问题不在那里.

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

任何帮助将不胜感激 !



1> Florian Marg..:

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

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

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

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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有