うーん... Cookie セッションの使用について少し混乱しているようです。
あなたの/setcookie
パスはクッキー/セッション値を設定しません。req.session
Cookie セッションを使用するには、たとえばにいくつかの値を設定する必要がありますreq.session.message = "Hi there!"
。これらの値は現在、Cookie に保存されています。
1 つのコールバックだけではできませんres.app.use()
。この方法では、リクエスト セッションは他の場所では機能しません。これらの Cookie を別のリクエストで読み取るにはapp.use(express.cookieSession({ key: "test", secret: "test" }));
、 をアプリケーション レベルに置きます。
編集:実際に私はあなたの res.app.use() 呼び出しについて考えました/setcookie
. 特定のリクエストにのみ cookieSession ミドルウェアを追加する場合は、次の手順を実行する必要があります。
yourParser = express.cookieSession({ key: "test", secret: "test" });
app.get('/', yourParser, ...);
app.get('/setcookie', yourParser, ...);
解決
これは実際の固定ソースです。
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.cookieSession({ key: "test", secret: "test" }));
app.get('/setcookie', function(req, res, next){
req.session.message = "Hellau there";
res.end();
});
これらの値を調べるには、次をapp.get('/',...)
試してください。
app.get('/', function(req, res, next){
console.log(req.session); //Yay, this will be available in all requests!
res.end();
});
デバッグ
また、Cookie に保存されているものを手動でデコードする方法についての質問に答えるには、以下を参照してconnect/lib/middleware/cookieSession.js
ください。
// cookieParser secret
if (!options.secret && req.secret) {
req.session = req.signedCookies[key] || {};
} else {
// TODO: refactor
var rawCookie = req.cookies[key];
if (rawCookie) {
var unsigned = utils.parseSignedCookie(rawCookie, secret);
if (unsigned) {
var originalHash = crc16(unsigned);
req.session = utils.parseJSONCookie(unsigned) || {};
}
}
}
それはreq.cookies[key]
(基本的にあなたがすでにやっていること(req.cookies.test
))を取り、それをにポップし、それをutils.parseSignedCookie
にポップしutils.parseJSONCookie
ます。
生の Cookie 文字列を utils.js ファイルの最後に挿入します。
var signed = exports.parseSignedCookie(
's:j:{}.8gxCu7lVJHVs1gYRPFDAodK3+qPihh9G3BcXIIoQBhM'
, 'test');
var parsed = exports.parseJSONCookie(signed);
console.log(parsed);
そしてそれを実行しました。私が得たものを推測してください:
{}
なんで?req.session
オブジェクトに何も設定しないためです。:)