我使用护照进行一些管理员身份验证,但重定向似乎不是在调用我的功能。因此,登录时打印的所有内容都是[object Object]
我的代码: 路由
app.get('/admin', isLoggedIn, Routes.admin);
app.get('/login', Routes.adminLogin);
app.post('/login', passport.authenticate('local-login', {
successRedirect : '/admin',
failureRedirect : '/login'
}));
护照设置
var LocalStrategy = require('passport-local').Strategy;
passport.serializeUser(function(user,done){
done(null, user._id);
});
passport.deserializeUser(function(id, done){
user.getCollection().findById(id)
.on('success', function(doc){done(doc)});
});
passport.use('local-login', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
}, function(req,username,password,done){
user.getName(username)
.on('success', function(doc){
if(doc == null || doc.password != password) {return done(null, false, "Invalid password");}
return done(null, doc);
})
.on('error', function(err){return done(err);});
}));
};
管理路线:
var adminRoute = exports.adminRoute = function(req,res){
console.log(" ADMIN PAGE");
res.render('admin.jade');
};
答案 0 :(得分:0)
@robertklep是正确的,将null
作为deserializeUser内部完成的第一个参数传递。
passport.deserializeUser(function(id, done){
user.getCollection().findById(id)
.on('success', function(doc){done(null,doc)});
});