2016-07-30 6 views
1

私は例えば、2つのサブドメインとメインのサイトで構成現時点ではプラットフォームを構築しています:NodeJSアプリケーション間にセッションが存在しますか?

example.com 
sub1.example.com 
sub2.example.com 

これらの3つのアプリは、別のポートで独立して実行し、nginxの経由にルーティングされています。

sub1.example.comが認証などを制御しているとします。ここでログインが行われ、セッション変数が設定され、JWTが生成されます。セッションデータを1つのアプリから別のアプリに渡してもらえますか? sub2.example.comはセッションデータを確認できますか?

どうすればこの問題を解決できますか?

注:これらのアプリは元々1つのアプリに含まれていましたが、今は別々のアプリです。セッションは現在、Redisを使用して保存されています。

答えて

0

セッションデータは、明示的に格納していないと、別のサブドメインに持ち越されません集中化されたデータベースや、すべてのサブドメインがアクセスできるいくつかのストレージメカニズムです。

JWTを使用しているので、サブドメインが異なるサーバー/プロセスで実行されている場合は、すべてのサブドメインで認証を行う必要があります。同じ秘密鍵を維持するだけで済みます。

セッションデータを維持するための、簡単なステップは次のようになります - ユーザーの要求は、任意のサブドメインに入った場合:この場合

  1. はRedisの中でAPIキーとJWTや店舗のトークンを使用して要求を認証

今、別の永続データベース内

  • ストア、そのトークンに対するセッションデータを初めてです要求はJWTトークンを持つ同じユーザーから来て、そのトークンIDに対してセッションデータが存在するかどうかを認証してデータベースを参照し、使用します。

    これが役に立ちます。

  • 1

    それぞれが別のサーバーで、node.jsの別のプロセスを実行している場合、それらの間でセッション(または何らかの種類の識別子)を渡す方法が必要です。
    あなたのリクエストにセッションヘッダーを使用して、すでにログインしていることを他のサーバーに伝えることができます。

    +0

    あなたがログインしていると言う単一のフラグは問題ありませんが、アプリはAPIキーとJWTを使用してリソース全体の認証を行います。 – nickcorin

    関連する問題