2016-10-06 6 views
0

私はクライアント(frondend)のapp expressアプリをポート3000に、別のadmin expressアプリを8080で実行しています。複数のexpress/Nodejsアプリケーションをlocalhostで実行するには?

しかし、クライアントエクスプレスアプリでページを移動したりページを更新しているときは、ログインにリダイレクトされます。

私は管理者用にExpressセッションのnpmを使用していますが、フロントエンドはちょうどcmsのようなものです。セッションや何か複雑なものはありません。何が原因で起こっているのですか?

+1

を。しかし、私は他のノードのアプリケーションでナビゲートするためにセッションが_lost_であることを疑うでしょう。セッションの寿命を短く設定し、非アクティブなためタイムアウトする可能性が高くなります。 –

答えて

1

クッキーは、ポート8080(及びその逆)上で実行しているアプリケーションに送信されます。

私の推測では、各アプリにユニークなcookie nameを指定していないと思われるので、両方のアプリのセッション処理に干渉する可能性があります。だから、

、それぞれに異なるクッキー名を使用します。言うことはできませんどのようにセットアップコード内のセッション処理知らない

app.use(session({ 
    name : 'frontend.sid', // and, say, 'admin.sid' for the admin app 
    ... 
})); 
+0

Robert Robertさん、ありがとうございます。これはうまくいきました。もうセッションメモリストアモジュールを見つけましたか? SIENCE express-sessionは、メモリストアに値を格納します。これは、生産のためにこれを使用することは有効ではありません(プロダクションには適していません)。だから、セッションメモリストアを使用して、プロダクションでどんなヘルプを提供していますか? –

+0

@AkhilGopan私は本番環境でメモリストアを使用しません。しかし、[既にたくさんの選択肢があります](https://www.npmjs.com/package/express-session#compatible-session-stores)、おそらく既に使用しているデータベースで動作するものがあります。 – robertklep

+0

Thankyou Robert ...私はPostgresを使用しています。私はそれを使用して実装します。 –

0

別のブラウザのRun:

mozillachromeに1つ、その他のような別のブラウザでそれらのいずれかを試してみてください。そこにセッションがぶつかって起こっている。

ブラウザを変更するとよい解決策になる場合があります。

同じブラウザでを実行したい:

だけnormal modeでのサービスを実行して、私はあなたに目を通すことを示唆して提供された情報に基づいてincognito mode

0

で他のサービスを実行明示的セッションを初期化する方法。 secureフラグがtrueに設定されている場合は、有効なHTTPS証明書がlocalhostに設定されている必要があります。そうしないと、セッションが作成されず、リダイレクトの問題が発生する可能性があります。ドキュメントから

のセキュアは:セキュアのSet-Cookie 属性のブール値を指定します。 trueの場合、Secure属性が設定され、そうでない場合は になります。デフォルトでは、Secure属性は設定されていません。 secure:trueは推奨オプションです。ただし、 にはhttps対応のウェブサイトが必要です。つまり、セキュアな CookieにはHTTPSが必要です。 secureが設定されていて、HTTP経由でサイトにアクセスすると、 のCookieは設定されません。ポート3000上で実行されているアプリの

関連する問題