これは私のセットアップです:
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()
正しくレイアウトされていますか?
これに似ている
UPDATE_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 set
。
ブラウザの Cookie を確認すると、Cookie が設定されています。
同じブラウザを使用してlocalhost:3000
再度ヒットすると、同じ応答「cookie set」が表示されます。
リクエストが Cookie で取得されていないようです。
したがって、別のファイルで、上記のコードを正確にコピーして貼り付け、ポートをに切り替えました3080
。
それが 2 番目の応答を通過すると、「signed cookie: boo」が生成されます。
次に、更新localhost:3000
すると、応答はsigned cookie: boo
.
なぜこれが起こるのですか?すべきではないキャッシングが行われていますか?
どんな助けでも大歓迎です。
UPDATE_01 Cookie を設定した直後に
を実行しても、返されます。追加の後に一連のランダムな文字と数字が続くため、Cookie は署名されます。割り当てられていませんreq.signedCookies.session
undefined
.
req.signedCookies