Koa中使用bcrypt对数据进行加盐加密

一、安装bcrypt时遇到的坑

npm install --save bcrypt 
//直接安装,控制台会报错

报错内容

PS C:\studyCode\SmileVue\service> npm install --save bcrypt --registry=https://registry.npm.taobao.org

> bcrypt@4.0.1 install C:\studyCode\SmileVue\service\node_modules\bcrypt
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download

解决方法
先全局安装 node-gyp

npm install -g node-gyp

然后再

npm install --save bcrypt 

对数据进行加密操作部分代码

const mongoose = require('mongoose') //引入mongoose
const Schema = mongoose.Schema //声明Schema
let ObjectId = Schema.Types.ObjectId //声明Object类型
const bcrypt = require('bcrypt') 
const SALT_WORK_FACTOR = 10 //配置加盐的位数
// 创建用户Schema
const UserSchema = new Schema({
    userId:ObjectId,
    userName:{unique:true,type:String},
    password:String,
    createAt:{type:Date,default:Date.now()},
    lastLoginAt:{type:Date,default:Date.now()}
})

// 每次存储时都要执行,加盐加密
UserSchema.pre('save', function(next){
    bcrypt.genSalt(SALT_WORK_FACTOR,(err,salt)=>{
            if(err) return next(err)
            bcrypt.hash(this.password,salt,(err,hash)=>{
                if(err) return next(err)
                this.password = hash
                next()
            })
    })
})
// 发布模型2
mongoose.model('User',UserSchema)

然后执行插入语句,控制台不报错,去数据库查看一下,就加密成功啦。
Koa中使用bcrypt对数据进行加盐加密_第1张图片
附加一下,插入数据的代码

// 立即执行函数,连接数据库
;(async()=>{
    await connect()
    initSchemas()
    const User = mongoose.model('User')
    let oneUser = new User({userName:'Vue05',password:'123456'})
    oneUser.save().then(()=>{
        console.log('插入成功')
    })

    // 读取插入的数据
    let users = await (await User.findOne({})).execPopulate()
    console.log('---------')
    console.log(users)
    console.log('---------')
    
})()


你可能感兴趣的:(Node.js,Koa)