【问题标题】:BCRYPT issue pulling from MySQL从 MySQL 中提取的 BCRYPT 问题
【发布时间】:2020-06-06 02:37:07
【问题描述】:

在我的编程工作中是新手,但我被卡住了,找不到任何帮助。我能够将用户注册到我的数据库中并散列密码。我正在尝试能够使用该用户登录。我可以检查电子邮件和密码中的必填字段,但是当我在数据库中输入具有正确密码的用户时,页面会挂起。

'''
exports.login = (req,res) =>{
        try {
            const {email, password} = req.body;
            if (!email || !password){
                return res.status(400).render('login', {
                    message: 'Email and password required.'
                })
            }

            db.query ('SELECT * FROM users WHERE email = ?', [email], async (error, results)=> {
               if(error)
               console.log(error)

               if(!results){
                res.status(401).render('login', {
                    message: 'Invalid email or password.'
                })
                }else{
                   await bcrypt.compare(req.body.password, results.password)
                        if(bool == false){
                            res.status(401).render('login', {
                                message: 'Invalid password.'
                        })
                    }else{
                        res.status(401).render('index', {
                            message: 'User Logged in'
                         });    
                }

            }
        })

        } catch (error) {
                console.log(error);
    }
}'''

【问题讨论】:

    标签: javascript mysql node.js express


    【解决方案1】:

    试试这个函数:(bcryptCompare.js)

    const checkBcrypt = async function(pass, hash) {
      const bcrypt = require('bcrypt');
      return new Promise(resolve => {
        bcrypt.compare(pass, hash, function(bcryptErr, bcryptRes) {
          if (bcryptErr) {
            console.log('ERROR -> BCRYPT');
            return resolve(false);
          } else {
            if (!bcryptRes) {
              return resolve(false);
            } else {
              return resolve(true);
            }
          }
        });
      });
    }
    
    module.exports = checkBcrypt;
    

    你可以这样使用它:

    const checkBcrypt = require('./bcryptCompare');
    
    const checkPass = await checkBcrypt(req.body.password, results.password);
    if(checkPass){
       //
    } else {
       //invalid password
    }
    

    【讨论】:

    • 感谢您抽出宝贵时间帮助我解决此问题。我在玩弄你提供给我的东西,并试图让它在我的应用程序中运行。谢谢,很快就会回来报告!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2019-10-09
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多