【问题标题】:mysql user authentication for nodeftpdnodeftpd的mysql用户身份验证
【发布时间】:2015-06-22 09:28:37
【问题描述】:

我想将 nodeftpd 与 mysql 身份验证一起使用,但问题是 connection.query() 是异步的,并且脚本在 mysql 返回结果之前完成。

虽然,我已经制定了一个解决方案,但它是一个 hack,并不是真正的解决方案,而且很丑陋。那么如何在命令中使用mysql进行身份验证:nodeftpd库的pass

所以它更多的是如何正确异步,可能!

conn.on('command:pass', function(pass, success, failure) {

    if(pass)
     con.query('select * from wp_users where user_login = ? and user_pass = ?',[username, pass], function(err, rows, fields){
        if(rows.length > 0  ){
            success();
            return;
        }else{
            failure();
            return;
        }
        console.log('yy');

    });
     console.log('xx');
     failure();
  });

【问题讨论】:

    标签: mysql node.js asynchronous


    【解决方案1】:
    conn.on('command:pass', function(pass, success, failure) {
    var self = this;
    
        if(pass)
          this.validateUser(username,pass,function(res){
           if(res) { 
                  success();
           } else {
                  failure();
           }
       });
        return;
    });
    
    validateUser = function(username,pass,callback) {
    con.query('select * from wp_users where user_login = ? and user_pass = ?',[username, pass], function(err, rows, fields){
            if(rows.length > 0  ){
                callback(true);
            }else{
        callback(false);
            }
        });
    }
    

    【讨论】:

    • 它正在工作!你能解释一下为什么它使用额外的函数而不是直接在 command:pass 回调中调用 con.query 吗?
    • 在您的情况下,您需要阻塞代码,除非用户通过验证,否则程序不应再进一步。您使用的代码是完全异步的,这就是为什么下一行代码甚至无需等待登录操作即可执行。
    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2019-07-24
    • 1970-01-01
    • 2020-07-15
    • 2021-12-25
    • 2017-03-18
    相关资源
    最近更新 更多