4

私のnode.jsサーバー(実行中expressおよびsocket.io)では、人が接続するときに、それらを配列に追加し、配列内の位置をセッションに保存して、各接続が次のように独自の情報にアクセスできるようにします。

session.person_id = people.length;
session.save();
people.push(new Person());
//people[session.person_id] => Person

そして、私がセッションで保存するのは。だけですperson_id。私はexpress.session()これを処理するために使用していましたが、一度に接続しているすべての人に情報を送信し始めるまでは問題なく機能していました。私が彼らの接続をループして彼らのセッションを取得するとき、時々(私はエラーを複製する方法を理解することができません)session存在しますが、存在しませんsession.person_id

とにかく、セッションの保存方法を変更することで、問題を理解するのに役立つことを願っています。ですから、どこにも答えが見つからない質問がいくつかあります。

  1. express.cookieSession()からのCookieはどこに保存されますか?サーバー側またはクライアント側?
  2. express.cookieSession()は、ロードバランサーの背後で実行されている複数のサーバーを許可しますか?
  3. express.cookieSession()を使用しているときに、ユーザーがセッションデータを操作することは可能ですか?
4

1 に答える 1

3

1-express.cookieSession()からのCookieはどこに保存されますか?サーバー側またはクライアント側?

Cookieはサーバーからの応答で送信され、ブラウザーは要求ごとにそのCookieを送り返します。

2-express.cookieSession()は、ロードバランサーの背後で実行されている複数のサーバーを許可しますか?

はい、共有ストア(RedisStoreなど)を使用する場合

3-express.cookieSession()を使用するときに、ユーザーがセッションデータを操作することは可能ですか?

署名されたCookie(セッションの初期化時にシークレットを提供する場合のエクスプレスでのセッションCookieのデフォルト)を使用する場合は除きます。

var redis = require('redis').createClient();
app.use(express.session({
  secret: "some random string",
  store: new RedisStore({client: redis})
  }));
于 2013-02-14T20:00:29.130 に答える