[英]Create New User with Passport-Local using MongoDB and Node.JS
Here's the code for a new user : 这是新用户的代码:
var User = mongoose.model('User', userSchema);
var usr = new User({ username: 'bob', email: 'bob@example.com', password: 'secret' });
Here's the code for checking login . 这是检查login的代码。
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' });
}
});
});
}));
If the username
doesn't exist, it says "Unknown user __________"
如果username
不存在,则显示"Unknown user __________"
Instead of saying unknown user
, I want to create a new user in the database. 我不想说unknown user
,而是要在数据库中创建一个新用户。 How do I modify this code to do that? 我如何修改此代码来做到这一点?
I'd like to create a new user with the login info they entered if that login name doesn't already exist. 如果该登录名不存在,我想用他们输入的登录信息创建一个新用户。
I'm trying this and it's not working. 我正在尝试此操作,但无法正常工作。 bob5 isn't saving to the database. 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.");
}
});
If I type this, bob99 gets saved to the database. 如果键入此内容,则bob99将保存到数据库。 So I can create a user... I just need to pass the arguments to it within the if statement (I think). 所以我可以创建一个用户...我只需要在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' });
}
});
});
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.