1. ホーム
  2. node.js

[解決済み] nodejs のセッションクッキーを表現する: req.cookies['connect.sid'] が生成されず、リフレッシュのたびに req.sessionID が異なる。

2022-02-07 17:13:17

質問

express 4.13.3、express-session 1.11.3を使用しています。私の設定セッションはこちらです。

app.use( session({/*store: new redis_store,*/name: 'connect.sid', secret: 'azerty is qwerty', resave: false, saveUninitialized: false, cookie:{httpOnly: false, secure: false, maxAge: null}}) );

ここでは、次のように印刷します。 req.cookies['connect.sid']req.sessionID :

app.get("/", function (req, res) {
  console.log(req.sessionID);
  console.log(req.cookies['connect.sid']);

  res.sendStatus(200);
});

更新の都度 req.sessionID 異なる req.cookies['connect.sid'] 未定義 . 何ヶ月か前に、as req.sessionID が更新時に変化していたので、私は req.cookies['connect.sid'] で、それは魅力的なように動作していました。今日、私のコードをチェックしたところ、以下のことに気づきました。 connect.sid はもうクッキーの中に存在しない。

では、何が問題なのでしょうか?クッキーのセッションIDを使用するにはどうすればよいのでしょうか?

解決方法は?

req.session.id と同じです。 req.sessionIDreq.session.cookie はセッション設定オブジェクトです。

いくつかのテストの後、私は、もしあなたが req.cookies['connect.sid'] を使用する必要があります。 使用 はセッションを手動で変更します。例えば、次のように書きます。 req.session.i = 1 などを使用します。そうすると、id connect.sid がナビゲータに表示されるようになります (例えば Chrome Dev Tools を使用します)。さらに、もしあなたがその req.sessionID は同じままにしておく必要があります。 res.sendStatus(200) または他のレスポンスが関数の最後にあります。

しかし、1つ問題が残ります。このコードを見てください。

app.post("/upload-files", upload.array('files'), function (req, res, next) { 
    if(!req.session.i) req.session.i = 0;
    ++req.session.i;
    console.log("i: " + req.session.i);
}

ここでは post を使ってファイルの配列をリクエストします。 multer . として multer は、"files[]" という形式の名前では動作しません ( multer-not-accepting-files-in-array-format-gives-unexpected-filed-error-used(マルチターノットアセプティングファイルインアレイフォーマット、予期せぬファイルエラー)。 ) のため、ファイルを1つずつ送信せざるを得ません。ここで問題が発生しました。 i は持続せず、1に等しいままです。

何らかのバグがあるのだと思います。