【发布时间】:2013-10-21 12:30:18
【问题描述】:
我相信我已经正确配置了一切:
app.configure(function() {
app.use(express.cookieParser('secret message')); // secret it set here in new version of express or connect
app.use(express.bodyParser());
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session());
});
当请求使用正确的凭据“登录”时:
app.post('/api/login', passport.authenticate('local'), function (req, res, next) {
console.log(req.session.passport); // {"user":"5259f2739d4323000a000003"}
});
req.session.passport 已填充:
"passport": {"user":"5259f2739d4323000a000003"}
但是,当调用:
app.post('/api/checklogin', function (req, res, next) {
console.log(req.session.passport); // {}
})
req.session.passport 丢失:
"passport":{}
两次,req.session 看起来像这样:
{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"passport":{}}
** Passport 对象显然不同,如上所述
我假设我已经正确配置了serializeUser,因为它正确地设置了这个属性。
我不完全确定 Passport 如何创建会话 cookie,以及这些 cookie 如何持续存在。
我假设 req.session.passport 应该保留用户属性,但似乎 Passport 对象:
- 每次通话都会重置
- 实际上并未在会话中保存 Passport 属性
- 从未创建会话
我担心我可能会忽略一些重要的事情——可能是我可能需要做的事情,而 Passport 不能直接为我处理。
我不知道有什么方法可以测试会话是否由 Passport 创建。
非常感谢任何建议或帮助。这是一场多日的斗争。
【问题讨论】:
-
你能出示你的
deserializeUser吗?
标签: node.js passport.js