我正在尝试在节点项目中配置护照,我有登录和注册工作,但我无法将我的帐户对象传递给我的视图,以便我可以说'欢迎,名字'
我的护照登录策略返回帐户,如下所示:
passport.use('local-login', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done){
process.nextTick(function(){
Account.findOne({'username' : username}, function(err, account){
if(err)
return done(err);
if(!account)
return done(null, false, req.flash('loginMessage', 'No user found.'));
if(!account.validPassword(password))
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
//console.log('email: ' + account.email);
return done(null, account);
});
});
}));
我使用该策略的路线是:
app.post('/', passport.authenticate('local-login', {
successRedirect : '/profile',
failureRedirect : '/',
failureFlash : true
}));
和个人资料路线:
app.get('/profile', isLoggedIn, function(req, res) {
var jaccount = JSON.stringify(req.account);
//console.log('email: ' + jaccount.email);
res.render('../app/views/profile/index.ejs', {
account : jaccount
});
});
和isLoggedIn函数:
function isLoggedIn(req, res, next){
if(req.isAuthenticated()){
return next();
}
res.redirect('/');
}
视图给出了错误:
21 | <%if(account.email){%> 22 |
23 |
<%= account.account_type%>
24 |<%= account.username%>
无法读取未定义
的属性'email'
非常感谢任何帮助或建议,这是我的第一个节点项目,因此对于愚蠢的错误道歉。
谢谢,
灰
答案 0 :(得分:1)
将实际对象传递给视图,而不是通过JSON.stringify()
:
app.get('/profile', isLoggedIn, function(req, res) {
//var jaccount = JSON.stringify(req.account);
//console.log('email: ' + jaccount.email);
res.render('../app/views/profile/index.ejs', {
account : req.account
});
});