gpt4 book ai didi

node.js - 使用 MongoDB 和 Node.JS 创建 Passport-Local 新用户

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:51 25 4
gpt4 key购买 nike

以下是新用户的代码:

var User = mongoose.model('User', userSchema);
var usr = new User({ username: 'bob', email: 'bob@example.com', password: 'secret' });

这是检查登录的代码。

passport.use(new LocalStrategy(function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
user.comparePassword(password, function(err, isMatch) {
if (err) return done(err);
if(isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Invalid password' });
}
});
});
}));

如果用户名不存在,则显示“未知用户__________”

我不想说未知用户,而是想在数据库中创建一个新用户。我该如何修改这段代码来做到这一点?

如果该登录名尚不存在,我想使用他们输入的登录信息创建一个新用户。

更新

我正在尝试这个,但它不起作用。 bob5 没有保存到数据库。

passport.use(new LocalStrategy(function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) { usr = new User({ username: 'bob5', email: 'bob5@example.com', password: 'secret' });
usr.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: ' + usr.username + " saved.");
}
});

如果我输入此内容,bob99 就会保存到数据库中。所以我可以创建一个用户...我只需要在 if 语句中将参数传递给它(我认为)。

usr = new User({ username: 'bob99', email: 'bob99@example.com', password: 'secret' });
usr.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: ' + usr.username + " saved.");
}
});

最佳答案

passport.use(new LocalStrategy(function(username, password, done) {

User.findOne({ username: username }, function(err, user) {

if (err) { return done(err); }

if (!user) {
usr = new User({ username: 'bob99', email: 'bob99@example.com', password: 'secret' });
usr.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: ' + usr.username + " saved.");
}
});

}

user.comparePassword(password, function(err, isMatch) {
if (err) return done(err);
if(isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Invalid password' });
}
});
});
}));

关于node.js - 使用 MongoDB 和 Node.JS 创建 Passport-Local 新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com