当用户向我的API注册时,会返回一个用户对象.在返回对象之前,我删除了散列密码和salt属性.我必须使用
user.salt = undefined;
user.pass = undefined;
Run Code Online (Sandbox Code Playgroud)
因为当我尝试
delete user.salt;
delete user.pass;
Run Code Online (Sandbox Code Playgroud)
对象属性仍然存在并被返回.
这是为什么?
我正在MEAN.js上运行一些项目,我遇到了以下问题.我想做一些用户的配置文件计算并将其保存到数据库.但是用户模型中的方法存在问题:
UserSchema.pre('save', function(next) {
if (this.password && this.password.length > 6) {
this.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');
this.password = this.hashPassword(this.password);
}
next();
});
Run Code Online (Sandbox Code Playgroud)
如果我将使用我的更改发送密码,它将更改凭据,因此用户下次无法登录.我想在保存之前从用户对象中删除密码,但是我无法做到(让我们看看下面代码中的注释):
exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
/* Some calculations and user's object changes */
req.login(user, function(err) {
if(err) {
res.status(400).send(err);
} else {
console.log(delete user.password); // returns true
console.log(user.password); // still returns password :(
//user.save();
//res.json(user);
}
});
}
})(req, res, next);
}; …Run Code Online (Sandbox Code Playgroud)