0

ここに私の初期設定があります:

var session         = require('express-session');
var cookieParser    = require('cookie-parser');
app.use(session({
  saveUninitialized: true,
  resave: false,
  genid: function(req) {
    return Services.misc.generateUUID()
  },
  secret: secret.toString()
}));
app.use(cookieParser(secret));

次に、私のコントローラーで (単純なルーターを介してコントローラーにルーティングされ、Rails のような命名規則に基づいて適切なアクションをレンダリングします)、次のようにします。

var TestController = {
  noaction: function(req, res) {
    var locals = {
      billy: 'the goat'
    }

    console.log('req session'.red, req.session);
    res.cookie('test_cookie', 'Wu Tang Clan');

    this.services.render.view(req, res, this, 200, locals);
  }

module.exports = TestController;

これthis.services.render.viewは単なるサービスであるため、記述する必要はありません。res.render('./app/controllers' + controller + '/' + action)

コントローラーの res.cookie 行に注意してください ( docs on express.js )。それは公式ドキュメントが行うように言っていることであり、実際にはブラウザで設定されています:

ここに画像の説明を入力

ただし、 res.cookie の上の行はログであり、その中にあると思いますが、次のtest_cookieとおりです。

ここに画像の説明を入力

ブラウザ側で設定され、おそらく送信されているにもかかわらず、私が得るのは毎回標準の空のCookieだけです。

私の質問は次のとおりです: Express 4 で Cookie を適切に設定および受信するにはどうすればよいですか?

4

2 に答える 2

1

dsp_099 が言ったように、コードは問題ないようです。おそらくノードモンです。高速セッションはデータをメモリー内に保存するため、サーバーを再始動すると (nodemon を使用して自動的に)、すべてのメモリー・データがリセットされます。

ノードが再起動されてもセッション データを保持したいので、redis-session (Redis データベース) を使用することをお勧めします

于 2015-03-21T18:07:49.923 に答える