expressJS中未读取req.signedCookies
这是我的设置: express.js版本“:“3.0.0rc2”expressJS中未读取req.signedCookies,cookies,express,Cookies,Express,这是我的设置: 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_值,{signed:true}); res.redirect('/else_where')
app.js
...
app.use(express.cookieParser('secret'));
app.use(express.session({secret: 'secret'}));
app.use(app.router);
...
然后设置签名cookie和重定向:res.cookie('session',cookie_值,{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,cookie是未定义的
,并且与req.cookies.session
配合良好
由于某些原因,我无法播放cookie的签名。不知道发生了什么事。
我的
app.use()
的顺序是否正确
与此类似
更新\u 02我为签名cookie实现了一个简单的
res/req
,如下所示:
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集
我检查浏览器cookie,cookie已设置。
当我使用相同的浏览器再次点击
localhost:3000
时,我得到相同的响应“cookieset”。请求似乎没有在cookie上出现 因此,在另一个文件中,我复制/粘贴了上面的代码和交换端口到
3080
当通过第二个响应时,会生成“signed cookie:boo” 然后,如果我刷新
localhost:3000
,则响应为signed cookie:boo
为什么会发生这种情况?是否存在不应该发生的缓存?
感谢您的帮助 更新\u 01
即使我在设置cookie后立即执行
req.signedCookies.session
,我也会返回undefined
。cookie确实会被签名,因为有一个附加的
后跟一组随机字母和数字。它没有被分配给req.signedCookies浏览器中的cookie是:
boo.o5SqHrxUOZkyNLdIBqIZrfog6jXYJkP78M99IMbrnDA
通过更新到express 3.0.3,cookie将变为:
s:boo.o5SqHrxUOZkyNLdIBqIZrfog6jXYJkP78M99IMbrnDA
此问题在更新后已修复