6

次のような Express.js を使用して Node.js テスト サーバーをセットアップしました。

var express     = require('express');
var MemoryStore = express.session.MemoryStore;
var app         = express.createServer();

app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(app.router);
    app.use(express.session({
        store: new MemoryStore(),
        secret: 'secret',
        key: 'bla'
    }));
});

app.get('/', function(req, res){
    console.log(req.session);
    res.end("html");
});

app.listen(3000);

console.log(req.session)undefined が出力されるのはなぜですか? 私はそれを正しく使用しませんでしたか?ユーザーのセッションに変数を保存するにはどうすればよいですか?

req.sessionクライアントは、Cookie として保存されている SID を受け取りますが、属性が定義されていないため、 に属性を割り当てることができません。この問題を解決するためのヒントをありがとう! :-)

これは私が使用しているバージョンです:

├─┬ express@2.5.9
│ ├─┬ connect@1.8.7
│ │ └── formidable@1.0.9
│ ├── mime@1.2.4
│ ├── mkdirp@0.3.0
│ └── qs@0.4.2
4

2 に答える 2

20

問題は次のとおりですapp.use(app.router)。ルートをコールチェーンのその位置にマウントします。セッションミドルウェアのにあるので、まだありませんreq.sessionapp.get省略した場合、最初の(またはその他の)ときはいつでもルートが配置さapp.postれます。ルートの場所を制御したい場合はapp.use(app.router)、セッション ミドルウェアの下に移動するだけです。

Express の構成ミドルウェアのドキュメントを参照してください。

于 2012-04-23T22:16:52.463 に答える
2

何が原因かわかりませんapp.routerが、それが問題の原因のようです。その行を削除すると、うまくいきました。

于 2012-04-23T21:50:17.710 に答える