我正在使用带有Express的PassportJS来对用户进行身份验证,并且试图创建一个编辑配置文件页面,您可以在其中更新数据库中的用户详细信息。当我执行req.login更新登录用户时,req.user变为未定义状态,而不是保存新用户的数据。这是我正在使用的与wallet.js相关的代码。
var passport = require('passport');
app.use(session({
secret:'secret',resave: false,saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
//update the logged in user
db.collection('User').find({"_id": ObjectId(id)}).toArray(function(err,newUser)
{
if (err) { console.log(err); }
else{
req.login(newUser[0],function(err) {
if (err) {
console.log(err);
res.redirect('/login');
}else{
res.redirect('/editProfile');
}
});
}
});
function initialize(passport){
const authenticateUser = (email,password,done) => {
db.collection('User').find({"Email": email}).toArray(function(err,user){
if (err) { console.log(err); }
else {
var userFound = user[0];
em = email;// when user is logged in saves the email,used is cart.
if(userFound == null){
return done(null,false,{message: 'No user found with that email.'})
}
if(password.localeCompare(userFound.Password) == 0){ //equal
return done(null,user)
}else{
return done(null,{message: 'Password incorrect'})
}
};
});
}
passport.use(new LocalStrategy({ usernameField: 'email' },authenticateUser))
passport.serializeuser((user,done) => done(null,user))
passport.deserializeuser((user,user))
}