簡體   English   中英

驗證NodeJS中的哈希密碼

[英]Verify hashed password in NodeJS

從幾周開始,我開始學習NodeJS。 我正在構建我的第一個應用程序,用戶可以在其中注冊帳戶並使用其憑據登錄。 當用戶注冊帳戶時,密碼將被散列。 我正在使用NPM的密碼哈希。 密碼的哈希工作正常。 問題是用戶登錄時驗證密碼。這是我的代碼:

注冊:

router.post('/register', function(req, res, next) {
    req.getConnection(function (err, connection) {
        var data = {
            username: req.body.username,
            password: passwordHash.generate(req.body.password),
            mail: req.body.mail,
            hometown: req.body.hometown
        };
        connection.query("INSERT INTO users set ? ", [data], function(err, results) {
            res.redirect('/secret/login');
        });
    });
});

登錄並驗證哈希密碼:

router.post('/login', function(req, res, next) {

   var user_login = req.body.username;
   var password_login = req.body.password;

    req.getConnection(function(err, connection) {

        if (err) throw err;

        connection.query('SELECT * FROM users WHERE username = ?', [user_login], function(err, results) {

            if(results[0] && passwordHash.verify(password_login, results[0].password)) {

                  req.session.regenerate(function(){
                  req.session.login = true;
                  req.session.username = user_login;
                  req.session.data = results[0];
                  res.redirect(req.baseUrl);

            });

            } else {

                console.log(results[0]); // true
                res.redirect(req.baseUrl);

            }

        });

      });

    });

我也嘗試過

console.log(passwordHash.verify(password_login, results[0].password));

當我使用其中一個注冊帳戶的用戶名和密碼登錄時,console.log中的布爾響應每次都為“ false”。 我在互聯網上找不到答案,所以這就是為什么我在這里問。 我希望有人可以幫助我解決這個問題!

我正在使用以下模塊:

"ejs": "^2.3.4",
"express": "^4.13.3",
"express-myconnection": "^1.0.4",
"multer": "^1.1.0",
"mysql": "^2.9.0",
"password-hash": "^1.2.2"

驗證哈希密碼時,我在做什么錯?

我發現了問題..密碼以varchar(50)的形式保存在數據庫中。.必須是varchar(88)。 感謝您的閱讀和回答!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM