Mongoose.save 内的 Passport-Local 问题
Issue with Passport-Local within a Mongoose.save
我正在使用以下代码;
router.post('/register', function(req, res) {
User.register(new User({ username : req.body.username }),
req.body.password, function(err, user) {
if (err) {
return res.status(500).json({err: err});
}
if(req.body.firstname) {
user.firstname = req.body.firstname;
}
if(req.body.lastname) {
user.lastname = req.body.lastname;
}
user.save( function(err, user) {
passport.authenticate('local')(req, res, function () {
return res.status(200).json({status: 'Registration Successful!'});
});
});
});
});
它产生以下内容;
{
"_id" : ObjectId("59a631ff29e0a506c81032b3"),
"salt" : null,
"hash" : null,
"username" : "admin",
"admin" : false,
"lastname" : "Last",
"firstname" : "Test",
"__v" : 0
}
salt 和 hash 是从 passport.authenticate('local') 生成的。如果我排除 user.save (function(err, user) {...}); passport.authenticate 周围的代码,它不会更新姓氏或名字部分,但 salt 和 hash 确实会更新。
我在这个论坛上搜索过类似的问题;查看 Passport (http://passportjs.org/docs), and Passport-local github (https://github.com/jaredhanson/passport-local) 以寻找可能的解决方案,但未找到类似的问题或解决方案。
任何建议都很棒。
经过大量研究,这是一个解决我遇到的问题的代码示例。 First Name、Last Name、Salt 和 Hash 会随之正确更新。
我仍然不确定为什么在从 user.save 中调用 passport.authenticate 时原始代码会抛出 401 / 未经授权的错误。
router.post('/register', function(req, res) {
User.register(new User({
username : req.body.username,
firstname : req.body.firstname,
lastname : req.body.lastname,
}),
req.body.password, function(err, user) {
if (err) {
return res.status(500).json({err: err});
}
passport.authenticate('local')(req, res, function () {
return res.status(200).json({status: 'Registration Successful!'});
});
});
});
我正在使用以下代码;
router.post('/register', function(req, res) {
User.register(new User({ username : req.body.username }),
req.body.password, function(err, user) {
if (err) {
return res.status(500).json({err: err});
}
if(req.body.firstname) {
user.firstname = req.body.firstname;
}
if(req.body.lastname) {
user.lastname = req.body.lastname;
}
user.save( function(err, user) {
passport.authenticate('local')(req, res, function () {
return res.status(200).json({status: 'Registration Successful!'});
});
});
});
});
它产生以下内容;
{
"_id" : ObjectId("59a631ff29e0a506c81032b3"),
"salt" : null,
"hash" : null,
"username" : "admin",
"admin" : false,
"lastname" : "Last",
"firstname" : "Test",
"__v" : 0
}
salt 和 hash 是从 passport.authenticate('local') 生成的。如果我排除 user.save (function(err, user) {...}); passport.authenticate 周围的代码,它不会更新姓氏或名字部分,但 salt 和 hash 确实会更新。
我在这个论坛上搜索过类似的问题;查看 Passport (http://passportjs.org/docs), and Passport-local github (https://github.com/jaredhanson/passport-local) 以寻找可能的解决方案,但未找到类似的问题或解决方案。
任何建议都很棒。
经过大量研究,这是一个解决我遇到的问题的代码示例。 First Name、Last Name、Salt 和 Hash 会随之正确更新。
我仍然不确定为什么在从 user.save 中调用 passport.authenticate 时原始代码会抛出 401 / 未经授权的错误。
router.post('/register', function(req, res) {
User.register(new User({
username : req.body.username,
firstname : req.body.firstname,
lastname : req.body.lastname,
}),
req.body.password, function(err, user) {
if (err) {
return res.status(500).json({err: err});
}
passport.authenticate('local')(req, res, function () {
return res.status(200).json({status: 'Registration Successful!'});
});
});
});