【问题标题】:Node JS MySQL Authentication节点 JS MySQL 身份验证
【发布时间】:2016-05-24 04:51:24
【问题描述】:

我是节点 JS 的新手。我正在针对后端 MYSQL 对用户进行身份验证。

这里是验证码sn-p

function Authenticate(username, password, fn) {
     connection.connect();
     var user;
     connection.query('SELECT * from Users where username = ' +
         connection.escape(username) + ' and password =' + connection.escape(password),
         function(err, rows) {
             user = rows[0].username;
         });
     if (!user) {
         return fn(new Error('cannot find user'));
     } else {
         return fn(null, user);
     }
     connection.end();
 }

这是我的回调函数。

app.post('/Login', function(req, res) {
    Authenticate(req.body.username, req.body.password, function(err, user) {
        if (user) {
            req.session.regenerate(function() {
                req.session.user = user;
                req.session.success = 'Authenticated as ' + user;
                res.redirect('Home');
            });
        } else {
            req.session.error = 'Authentication failed, please check your username and password.';
            res.redirect('Login');
        }
    });
})

我遇到了一个错误,我无法理解。

TypeError: Cannot set property 'error' of undefined
    at /...../.../node_modules/app.js:42:23
    at Authenticate (/..../..../node_modules/app.js:82:11).

请分享你的想法!

【问题讨论】:

  • 这行好像是说req.session不存在:req.session.error = 'Authentication failed, please check your username and password.';
  • 谢谢。我不太明白。但我尝试评论成功和错误会话消息,但仍然收到相同的错误。
  • 也许 req.session 根本不存在。您的错误告诉我的唯一一件事是 req.session 未定义。就您的代码而言,它看起来不错。
  • 是的,正确。谢谢我已经删除了整个会话细节,它现在正在工作。仍然身份验证不起作用。但我想这与我的数据库有关。
  • NP,我就把这个作为答案,你可以关闭这个问题。

标签: javascript mysql node.js


【解决方案1】:

取出 else 看看其他 req.session 功能是否正常,如果没有检查中间件是否为 express 验证器正确配置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2020-09-26
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多