閱讀這是我的設置:req.signedCookies沒有在expressJS
express.js版本「: 」3.0.0rc2「
app.js
...
app.use(express.cookieParser('secret'));
app.use(express.session({secret: 'secret'}));
app.use(app.router);
...
然後設置簽署cookie和重定向:
res.cookie('session', cookie_value, {signed: true});
res.redirect('/else_where');
然後檢索簽署的cookie:
var cookie = req.signedCookies.session;
console.log('get cookie: ' + req.cookies.session);
console.log('get signed cookie: ' + req.signedCookies.session);
的問題是,Cookie是undefined
已簽名的cookie和正常工作與req.cookies.session
。
由於某種原因,我沒有播放cookie的簽名。
不知道發生了什麼事。
我的app.use()
的順序是否正確佈置?
與此類似this
UPDATE_02
我實現了一個簡單的res/req
已簽署的cookie,像這樣:
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.cookieParser('secret'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(expressValidator);
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/', function(req, res) {
if (!req.signedCookies.cat) {
res.cookie('cat', 'boo', {signed: true});
console.log('setting cookie');
res.writeHead(200, {'Content-Type':'text/plain'});
return res.end('cookie set');
}
res.end('signed cookie: ' + req.signedCookies.cat);
});
當我使用的瀏覽器打localhost:3000
我得到的第一所期望的響應cookie set
。
我檢查瀏覽器cookies並設置了cookie。
當我使用相同的瀏覽器再次點擊localhost:3000
時,我得到了相同的響應'cookie集'。
該請求似乎無法從cookie中獲取。
因此,在另一個文件中,我複製/粘貼上面的代碼並切換到3080
。
當通過第二個響應產生`signed cookie:boo'時。
然後,如果我刷新localhost:3000
的迴應是signed cookie: boo
。
這是爲什麼發生?是否有緩存繼續這不應該?
任何幫助表示讚賞。
UPDATE_01
即使我做了req.signedCookies.session
立即設置cookie後,我回去undefined
。該cookie確實得到簽名,因爲有一個額外的.
後跟一堆隨機字母和數字。它沒有被分配到req.signedCookies