我相信我已經配置好了一切丟失:節點護照會在後續調用
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":{}}
**護照對象雖然明顯不同,如上所述
我假設我已正確配置serializeUser
,因爲它正確設置了此屬性。
我不完全確定Passport如何創建會話cookie以及這些cookie如何持續存在。
我認爲req.session.passport
應該保留用戶屬性,但它似乎護照對象之一:
- 重置每次通話
- 實際上並不保存護照性質的會議
- 該會話永遠不會創建
我擔心我可能會忽略一些很大的東西 - 可能是我可能需要做的事情,護照做的事情我不直接爲我處理。
我不知道有什麼方法來測試會話是否由Passport創建。
任何意見或幫助真的很感激。這是一場多日的鬥爭。
你可以顯示你的'deserializeUser'嗎? – robertklep