我有一個AngularJS客戶端使用$http()
函數將POST表單數據發送到Express服務器。我希望服務器在持有用戶電子郵件地址的客戶端中設置一個cookie。這就是我存儲的全部內容,所以我不需要更強大的服務器端會話。我只是使用cookie-session
模塊。快速Cookie會話不會持續POST請求
問題: Cookie不在客戶端持久化。隨後來自同一個客戶端的請求顯示一個空的會話變量。
我已經看到了example here,並且在設置cookie後使用req.session.save()
,但它仍然不起作用。
Server代碼:
// server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var cookieSession = require('cookie-session')
var methodOverride = require('method-override');
// Configuration
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(methodOverride('X-HTTP-Method-Override'));
var express = require('express');
var app = express();
// Cookies
app.use(cookieParser());
app.use(cookieSession({
name: 'session', // what should this name match?
resave: true,
saveUninitialized: true,
keys: ['key1', 'key2'] // what do these values need to match?
}));
app.use(function(req, res, next) {
// Create a cookie.
console.log("Session user [before set]: %j", req.session);
req.session.mycookie = "sample data"; // simplified example for illustration
console.log("Session user [after set]: %j", req.session);
// Save session cookie
req.session.save();
});
app.listen(3000);
來自同一個客戶的每請求給輸出:
Session user [before set]: {}
Session user [after set]: {"mycookie":"sample data"}
由客戶端的後續測試表明cookie不會持久。我甚至使用Firefox的「查看Cookies」插件來檢查是否創建了cookie,而不是。
1.爲什麼我的cookie不能持久?我是Express的新手,所以我可能會錯過一些明顯的東西。
2.我是否使用正確的參數來創建cookieSession?我不知道keys
或name
應該是什麼。 cookie-session
documentation對此很模糊,我在其他地方找不到更好的文檔。