美文网首页
Express下采用bcryptjs进行密码加密

Express下采用bcryptjs进行密码加密

作者: 码农苏1024 | 来源:发表于2017-10-24 17:05 被阅读0次

    前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容:
    Express下bcryptjs的使用步骤:
    1.安装bcryptjs模块

    npm install bcryptjs --save
    

    2.在需要加密的模块中引入bcryptjs库

    var bcrypt = require('bcryptjs');
    

    3.设置加密强度

    var salt = bcrypt.genSaltSync(10);
    

    4.注册时生成HASH值,并插入数据库

    router.post('/register', function(req, res, next){
        // 从连接池获取连接
        pool.getConnection(function(err, connection) {
            // 获取前台页面传过来的参数
            var param = req.query || req.params;
            /*生成HASH值*/
            var hash = bcrypt.hashSync(param.pwd,salt);
            // 建立连接 新增用户
            connection.query(userSQL.insert, ["",hash,param.phone,"","","",0], function(err, result) {
                res.send(result);
                // 释放连接
                connection.release();
            });
        });
    });
    

    5.登录时验证HASH值,并插入数据库

    router.post('/login', function(req, res, next){
        // 从连接池获取连接
        pool.getConnection(function(err, connection) {
            // 获取前台页面传过来的参数
            var param = req.query || req.params;
            // 建立连接 根据手机号查找密码
            connection.query(userSQL.getPwdByPhoneNumber, [param.phone], function(err, result) {
                if(bcrypt.compareSync(param.pwd,result[0].password)){
                    res.send("1");
                    connection.query(userSQL.updateLoginStatusById, [1,result[0].id], function(err, result) {
                    });
                }else{
                    res.send("0");
                }
                // 释放连接
                connection.release();
            });
        });
    });
    

    以上采用的是bcryptjs的同步用法,下面介绍异步用法:
    生成hash密码:

    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash("B4c0/\/", salt, function(err, hash) {
            // Store hash in your password DB.
        });
    });
    

    密码验证:

    bcrypt.compare("B4c0/\/", hash).then((res) => {
        // res === true
    });
    

    相关文章

      网友评论

          本文标题:Express下采用bcryptjs进行密码加密

          本文链接:https://www.haomeiwen.com/subject/ldrxpxtx.html