我想了解req.cookies和req.session.cookie之間的區別。我在Node.js Express中使用Passport進行身份驗證。Node Express - req.cookies和req.session.cookie之間的區別
如果我登錄我的兩行代碼:
console.log('cookies',req.cookies);
console.log('session',req.session);
我得到這樣的輸出:
cookies { 'mysite.sid.uid.whatever': 's:Ltko5IdDgsAISG0smrKNYaeIVy8nbBzF.MkGmpnf6uUKITIAgN4ws3YXqxJrMaeeSCzlKdjQnqfI' }
session { cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: false },
views: 8,
passport: {} }
我使用這個配置:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(busboyBodyParser());
//app.use(busboy());
app.use(cookieParser('cookie parser secret'));
app.use(session({
secret: process.env["SESSION_SECRET"],
saveUninitialized: true, // (default: true)
resave: true, // (default: true)
store: require('mongoose-session')(mongoose),
maxAge: 60000,
key: "mysite.sid.uid.whatever",
cookie: {secure: false}
}));
我不真正知道使用會話或cookie之間的區別,只是cookie僅在客戶端,會話可以是cl客戶端或服務器端。我幾次閱讀了Passport.js的文檔,但我仍然不太明白這裏發生了什麼。有人能幫我解釋一下嗎?據我所知,最好使用Redis使用服務器端會話。但是我沒有看到最終如何擺脫使用客戶端數據。在某些時候,你必須依賴存儲的客戶端數據嗎?
在我使用快速應用程序登錄後,護照對象將填充一個用戶字段,其中MongoDB爲objectid。
passport: { user: 549290b8246f0e1408e48b13 } }