我在node.js中设计了注册页面,但在点击注册表单中的提交按钮后,我收到以下错误:
发生了一些错误:引用错误:“bcrypt未定义”
我的用户模型如下:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
userName : {type:String,default:'',required:true},
firstName : {type:String,default:''},
lastName : {type:String,default:''},
email : {type:String,default:''},
mobileNumber : {type:Number,default:''},
password : {type:String,default:''},
});
userSchema.pre('save', function(next) {
var myuser = this;
var SALT_FACTOR = 5;
if (!myuser.isModified('password')) return next();
bcrypt.genSalt(SALT_FACTOR, function(err, salt) {
if (err) return next(err);
bcrypt.hash(myuser.password, salt, null, function(err, hash) {
if (err) return next(err);
myuser.password = hash;
next();
});
});
});
userSchema.methods.comparePassword = function(candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
if (err) return cb(err);
cb(null, isMatch);
});
};
module.exports = mongoose.model('myUser',userSchema);
答案 0 :(得分:0)
您需要安装然后需要一个bcrypt库,它不会内置到Node中,因此它为undefined
。
有几个可用,bcrypt.js是一个用本机JS编写并仍然维护的。还有bcrypt package绑定到C ++ bcrypt实现,它比纯JS实现运行得更快,但是你可能遇到compilation errors;因此,如果您不知道如何解决这类问题,您可能希望坚持使用JS实现。
要安装bcrypt.js,您可以使用npm:npm install bcryptjs
然后,在代码的顶部和mongoose一起使用它:
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
答案 1 :(得分:0)
是的我已经安装了bcryptjs并将其包含在我的猫鼬中。 但是当我点击“注册”按钮时,它会生成一个随机密码,而不是我在填写注册表单时输入的密码。
答案 2 :(得分:0)
首先在 npm 中使用以下命令安装 bcrypt
`npm install --save bcrypt`
稍后使用:
在后端节点js服务中导入bcrypt模块const bcrypt = require('bcrypt');
然后使用 bcrypt.hash() 方法我们可以加密消息或密码。