为了账号安全,请及时绑定邮箱和手机立即绑定

windows上用bcrypt-nodejs 替代 bcrypt

相对应的代码为

var bcrypt = require('bcrypt-nodejs')

...

bcrypt.hash(user.password, null, null, function (err, hash){
		if (err) {
			return next(err)
		} 
		user.password = hash
		next() 	
})


正在回答

12 回答

user.password = hash; 这一步是异步执行的,还没赋值成功,明文密码已经保存到数据库了。

参考以下同步写法:

UserSchema.pre('save', function (next) {
  var user = this;
  if (this.isNew) {
    this.meta.createAt = this.meta.updateAt = Date.now();
  } else {
    this.meta.updateAt = Date.now();
  }
  var hash = bcrypt.hashSync(this.password);
  this.password = hash;
  next();
});
 
UserSchema.methods = {
  comparePassword: function (_password, cb) {
    var hash = this.password;
    var isMatch = bcrypt.compareSync(_password, hash);
      cb(null, isMatch);
    }
};


3 回复 有任何疑惑可以回复我~
#1

eric_ou

尝试了很多回答,只有使用你的方法成功了
2016-07-19 回复 有任何疑惑可以回复我~
#2

墨小宝

刚方法确实有效,其他的在windows下不行,linux下行的通,是不是本身调用就有系统区别啊?奇怪
2016-09-01 回复 有任何疑惑可以回复我~
#3

多彩多

模式pre保存的时候,bcrypt加hash处理的时候要去掉后边的next();bcrypt回调中进行next()。
2016-10-11 回复 有任何疑惑可以回复我~
#4

西涯侠

4个评论两个赞?
2017-01-23 回复 有任何疑惑可以回复我~
#5

西涯侠

4个评论两个赞?
2017-01-23 回复 有任何疑惑可以回复我~
查看2条回复

我想问下  你第二个参数是null 也就是不加盐  对哈希没影响?

为什么我打印出来的password并不是哈希值  而是我输入的密码

1 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5710b7ff0001192e07500129.jpg

总是报这样的


app.post('/user/signup',function(req, res){

var _user = req.body.user

//var _user = req.param('user')

var user = new User(_user)

user.save(function(err,user){

if(err){

console.log(err);

}

console.log(user);

})


})


0 回复 有任何疑惑可以回复我~
#1

千年老二

Syntax: bcrypt.hash(data, salt, progress, cb)
2016-04-18 回复 有任何疑惑可以回复我~

我使用的是 bcrypt-nodejs  为什么在控制台输出密码没有加密,而且不能向数据库存数据,一直查询数据库 db.users.find({}).count() 为0

0 回复 有任何疑惑可以回复我~
#1

yoowind

我也是一样的问题
2016-11-22 回复 有任何疑惑可以回复我~

我电脑中有visual studio,node版本号是v0.12.7,安装bcrypt-nodejs或者bcryptjs或者bcrypt都不行,老是出错,卡在这个地方不知道怎么办了?http://img1.sycdn.imooc.com//56a04a640001d98906480466.jpg一直出现string not defined,谁有遇到这种情况,请问下怎么解决?


0 回复 有任何疑惑可以回复我~
#1

郑家好人

String吧
2016-02-25 回复 有任何疑惑可以回复我~

用bcrypt-nodejs ,"version": "0.0.3", 为什么密码那边总是匹配不上呢?别人有这样的问题吗?

0 回复 有任何疑惑可以回复我~
#1

hysunny

请问问题解决了吗?我也是密码一直匹配不上
2016-02-12 回复 有任何疑惑可以回复我~

成功安装了bcrypt ,第一首先确定你的node版本是偶数,也就是稳定版本。其次安装好

npm install bcrypt-gyp

实在不行,需要安装visual studio

目测多半是node版本号问题

0 回复 有任何疑惑可以回复我~
#1

落叶无痕

node的版本是偶数的,也安装visual studio,bcrypt-gyp安装成功,就是安装不了bcrypt
2016-08-21 回复 有任何疑惑可以回复我~

我之前写的源码:https://github.com/superpig/Imovie

0 回复 有任何疑惑可以回复我~
#1

是什么样的天气

可以在window下正常运行吗
2016-02-09 回复 有任何疑惑可以回复我~
#2

夕颜egao 回复 是什么样的天气

不能!!
2019-09-04 回复 有任何疑惑可以回复我~

var bcrypt = require('bcrypt-nodejs');

……

UserSchema.pre('save', function(next){
   if(this.isNew){
       this.meta.createAt = this.meta.updateAt = Date.now();
   } else {
       this.meta.updateAt = Date.now();
   }
   bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){
       if(err) return next(err);

       bcrypt.hash(user.password, null,null, function(err, hash){
           if(err) return next(err);

           user.password = hash;
           next();
       });
   });
   next();
})

还不行

1 回复 有任何疑惑可以回复我~

为什么我这个还是不行呢,求这段完整源码,谢谢!

0 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
node建站攻略(二期)——网站升级
  • 参与学习       51940    人
  • 解答问题       408    个

帮助你深入前后端开发留下的迷惑,为进一步自学打下基础

进入课程

windows上用bcrypt-nodejs 替代 bcrypt

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信