【问题标题】:Authentication with nodejs使用 nodejs 进行身份验证
【发布时间】:2020-02-28 13:58:50
【问题描述】:

在我的 nodejs 应用程序中进行登录时遇到问题。当我进行身份验证时,即使我输入了错误的用户,我的页面 home 也会呈现:

这是我的身份验证代码:

app.post('/auth', urlencodedParser, function(req, res) {
    var username = "'" + req.body.usernames + "'";
    var password = "'" + req.body.passwords + "'";
    var client = new Client(conString);
    client.connect();
    if (username && password) {
        client.query('SELECT * FROM Utilisateur WHERE username = ? AND password = ?', [username, password],function(err, results) {
            if (err) {
               console.log('error running the authentication:', err);
            }
            results = JSON.parse("[{},{}]")
            if (results.length > 0) {
                req.session.loggedin = true
                req.session.username = username
                res.render('home')
            }
        });
    }
});

【问题讨论】:

  • results = JSON.parse("[{},{}]") - 这就是问题所在。您忽略了查询结果并将一个包含两个空项的数组分配给 results 和 results.length 传递。
  • 是的,我确实通过执行 if (results["rowCount"] > 0) 并删除 results = JSON.parse("[{} ,{}]")

标签: sql node.js phppgadmin


【解决方案1】:

使用 sql 库而不是客户端。

app.post('/auth', urlencodedParser, function(req, res) {
        var username = "'" + req.body.usernames + "'";
        var password = "'" + req.body.passwords + "'";
        var mysql = require('mysql');
        var con = mysql.createConnection({
          host: "localhost",
          user: "yourusername",
          password: "yourpassword",
          database: "mydb"
       });

        if (username && password) {
            con.connect(function(err) {
                 if (err) throw err;
                 con.query('SELECT * FROM Utilisateur WHERE username = ? AND password = ?', [username, password],function(err, results) {
                    if (err) {
                        console.log('error running the authentication:', err);
                    }
                    results = JSON.parse("[{},{}]")
                    if (results.length > 0) {
                        req.session.loggedin = true
                        req.session.username = username
                        res.render('home')
                    }
                 });  
            });
        }
    });

【讨论】:

    猜你喜欢
    • 2012-04-23
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2018-11-10
    • 2019-08-18
    相关资源
    最近更新 更多