新手请教nodeclub源码的github授权问题
发布于 11 年前 作者 huanghuiquan 4693 次浏览 最后一次编辑是 8 年前

最近在看nodeclub源码,卡在了github授权部分,一直没看懂passport的两个方法,serializeUser和deserializeUser两个方法的作用,看了官方文档的解释:

Passport will maintain persistent login sessions. In order for persistent sessions to work, the authenticated user must be serialized to the session, and deserialized when subsequent requests are made.

英文不太好,大概意思是:为了维持登陆状态,将已授权user信息序列化为(serializeUser)字符串保存到session, 当产生后续请求时从session中反序列化(deserializeUser)出用户对象信息user。

nodeclub中是这样做的(注释是我自己的理解):

// github oauth
passport.serializeUser(function (user, done) { 
  done(null, user); // user是一个包含用户信息的对象,这里将对象序列化为string保存到session中
});
passport.deserializeUser(function (user, done) {
  done(null, user); // 这里是反序列化得到的用户信息对象,应该是要挂在req.user中的
});

但是在我测试的时候发现deserializeUser的回掉函数一直没被运行,一直搞不明白,求大牛解释啊。

4 回复

额,没人回答,只好自己说了,因为nodeclub没有使用passport.session()中间件的原因。

正在研究这一部分内容,学习怎么写个微博登陆。

@huanghuiquan 当时我加 passport 进来的时候,可能还没有 passport.session 这一层…

回到顶部