1

MongoDB インスタンスを共有する、同じサーバー マシン (異なるポート) で実行されている 2 つの個別の Express 4.x アプリがあります。どちらも異なるデータベースを使用し、異なるセッション シークレットを持っています。

アプリケーション A または B に問題なく個別にログインできます。私のセッションは維持されており、すべて順調です。ただし、A にログインしてから B にログインすると、A のセッションは破棄されます (逆も同様です)。

両方のアプリケーションのローカル認証はほぼ同じです。彼らのserializeUserdeserializeUserは非常に原始的です(ほとんどティーまでパスポートのドキュメントに従います)。

A にログインすると Breq.session.passportが破棄req.userされ、アプリ A で正しくシリアル化されず、セッションが無効と見なされるようです。

私は、両方のアプリが同じマシン (つまりドメイン) で実行され、ポートだけが異なるという事実に関係していると考え始めています。

4

3 に答える 3

3

express-session : Node.js の Express 用のシンプルなセッション ミドルウェア。これを使用するには、このパッケージをこのように含める必要があります。

var session = require('express-session');

このパッケージをインストールするには、次のコマンドを実行します。

$ npm install express-session

Express でこれを使用する方法は次のとおりです。

app.use(session({
  secret: 'secretkey',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

デフォルトでは、応答で設定する (および要求で読み取る) セッション ID Cookie の名前は ですconnect.sid。これを上書きするには、次を使用します。

app.use(session({
  name: 'cookiename',
  secret: 'secretkey',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

詳細については、このリンクを参照してください - https://www.npmjs.com/package/express-session

注:-express-sessionステートメントの前に、アプリケーション app.js にステートメントを入れてくださいapp.use(passport.session())

これがクエリの解決に役立つことを願っています!!

于 2016-04-29T14:31:09.817 に答える