CNode

新手请教nodeclub源码的github授权问题

Hhuanghuiquan发布于12 年前最后回复12 年前4 回复5542 浏览0 收藏

最近在看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)

H
huanghuiquan#1·12 年前

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

L
lzxue#2·12 年前

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

A
alsotang#4·12 年前
引用 huanghuiquan额,没人回答,只好自己说了,因为nodeclub没有使用passport.session()中间件的原因。

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

参与回复
登录后即可参与回复。登录