【发布时间】:2016-11-18 18:48:05
【问题描述】:
exports.initPassportLocalStrategy = function () {
passport.use(new LocalStrategy(
{
session: false
},
function(username, password, done) {
UserProxy.validateUserWithPassword(username, password)
.then(function (user) {
if(user) done(null, user);
else done(null, false);
})
.catch(done);
}
));
passport.serializeUser(function(user, cb) {
cb(null, user);
});
};
我正在实现一个基于令牌的身份验证中间件,没有看见。所以我想知道为什么我需要提供一个serialzeUser 函数?我已经读过原因是将用户或其某些属性放入会话中,然后 desearlizeUser 将从会话中检索整个对象并将其放入 req.user 中。
所以这是我的问题:
为什么不能done(null, user);在
LocalStrategy函数中将用户放入req.user?为什么还要费心连载和解散呢?如果删除
searlizeUser函数我会得到一个错误,但我可以在没有deserilzeUser函数的情况下逃脱,为什么?而在这种情况下,谁把用户对象放到req.user?
非常感谢。
【问题讨论】:
标签: node.js session express passport.js