[英]Handling firstname and lastname in passportjs
我想知道在passportjs中處理用戶的名字和姓氏,知道我嘗試了以下代碼:
passport.use('local-register', new passportLocal (strategyOption, function (email, password, firstname, lastname, callback) {
console.log(' ------- pass :' + password);
console.log(' ------- email :' + email);
console.log(' ------- fname :' + firstname);
console.log(' ------- lname :' + lastname);
var searchedUser = {
email: email
};
User.findOne(searchedUser, function (err, user) {
if (err) return callback (err);
//console.log(user);
if (user) return callback (null, false, {
message: 'User do exist!'
});
var newUser = new User({
firstname: firstname,
lastname: lastname,
email: email,
password: password
});
newUser.save(function (err) {
if(err) console.log('hi');
callback (null, newUser);
});
});
}));
但在控制台中我得到了以下內容:
---- p: pass(密碼給定) ---- email: email... ---- fname: - 這里我有一個奇怪的東西 -
------- fname :function verified(err, user, info) {
if (err) { return self.error(err); }
if (!user) { return self.fail(info); }
self.success(user, info);
} ------- lname:undefined
最糟糕的是:未知回調......所以節點無法處理回調,當我刪除 fname 和 lname 參數時......一切都像魅力一樣工作,所以有人知道如何處理護照中的 fname 和 lname 嗎?
謝謝,
以下代碼對我有用:
護照配置:
passport.use('local-signup', new localStrategy({
usernameField: 'email',
passwordField: 'password'
},
async (email, password, done) => {
try {const user = await UserModel.create({
email, password
})
console.log(`Welcome!`)
return done(null, user);
}
catch (error) {
console.log(`Signup error: ${error}`)
done(error)
}
}));
節點js路由:
router.post(
'/signup',
function (req, res, next){ passport.authenticate('local-signup', { session: false }, async function (err, user, info) {
try {
await UserModel.findOneAndUpdate({email: req.body.email}, { firstName: req.body.firstName, lastName: req.body.lastName },
{new: true});
await req.login(
user, { session: false },
(err) => {
if (err) {
return next(err);
}
const payload = {
id: user._id, email: user.email
};
const token = jwt.sign(
payload,
process.env.JWT_TOKEN_SECRET);
console.log('JWT signed.');
res.status(200).json({
success: true,
token: `Bearer ${token}`,
user: {
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName
}
});
});
} catch (err) {
console.log('Passport Signup err: ' + err)
res.send('Sign up error: ' + err)
return next(err);
}
}
)(req, res, next)
})
簡而言之,我在注冊路徑中使用了“Model.findOneAndUpdate”來用他們的名字和姓氏更新用戶的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.