1
我的用户模型是Bookshelf.js使用bcrypt
var Bookshelf = require('../../db').bookshelf;
var bcrypt = require('bcrypt');
var Promise = require('bluebird');
var Base = require('./../helpers/base');
// User model
var User_Model = Bookshelf.Model.extend({
tableName: 'users',
initialize: function() {
this.on('saving', this.hashPassword, this);
},
hashPassword: function(model, attrs, options) {
return new Promise(function(resolve, reject) {
bcrypt.hash(model.attributes.password, 10, function(err, hash) {
if(err) reject(err);
model.set('password', hash);
resolve(hash); // data is created only after this occurs
});
});
}
});
在创建密码设置为
$2a$10$QD6FmChgGZEMooCklLfemOvAaHHV2RfUMQ5EoNwuMeojb6y2Hh2iK
用户,并在登录完美的工作每次更新更改密码数据,
当对用户字段进行任何更新时,会导致每次更改密码为随机值
$2a$10$IVW.2JN/TPVABsx73t870uwKMNsDKoGmLJzOs1y/MPMOe.WRMBL4W
$2a$10$12sjEqM3t345dcq7rDixgu.9TZiWOC.JN5Ke8SI2F0IXv/YpdRwTK
在旁注 - 你应该在nodejs 8.0中检出async/await。而不是以您使用async/await的方式使用Promise是更简洁的语法,并使代码易于阅读。 一些链接: [点击这里](https://hackernoon.com/6-reasons-why-javascripts-async-await-blows-promises-away-tutorial-c7ec10518dd9) [链接Promisifying核心函数库](https://medium.com/front-end-hacking/promises-in-node-js-8-x-core-d6a8a93e85a2) – j10