2016-09-07 8 views
0

私はPassport.jsローカル戦略を使用してアプリケーションで認証を処理しています。私は変更を加えるたびにNodemonを使ってサーバーを自動的に更新しています。Passport.jsステートレス

問題変更するたびに、アプリケーションに再度ログインする必要があります。今のところ開発中ですが、同じコンセプトが複数のサーバー(EC2ロードバランサなど)にも適用されます。ですから、私の質問は、ユーザーの状態を維持しながらPassport.jsをステートレスにする方法はありますか?

サーバーの状態を維持したり、サーバーを再起動したりする方法があるようです。

+0

このアプリケーションがステートレスであることが重要な理由は何ですか?それがあなたが心配しているものなら、あなたは状態情報を伝えることができます - 私はそれがあなたにどのような利益をもたらすかはよく分かりません。ちょうどあなたが[XYの問題を尋ねる](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)を避けるのを手伝っています。 –

+0

私はEC2ロードバランサの使用を基本的には計画していますので、基本的にはリクエストごとに異なるサーバーを使用していますので、別のサーバーでログイン要求があってもユーザーが承認されていることを確認する必要があります。私は、ユーザーが新しいサーバーをすべてリクエストするたびにログインする必要はありません。それから、私が変更を加えるたびに痛みが増し、Nodemonがサーバーを再起動してサインインする必要があります。私は全く間違っているかもしれませんが、ほぼ同じソリューションが両方の問題を修正するようです。 –

+0

認証関連のデータをredis serverに保存します。したがって、サーバーの再起動では認証データがフラッシュされず、キャッシュはRedisサーバーではるかに高速になります。 –

答えて

1

あなたは2つのオプションがあります。例えば、永続セッションストアを使用し

  1. MongoDBRedis、またはPostgreSQL
  2. セッションをまったく使用しないで、代わりにJWTというJSON Webトークンを使用してください。

    const session = require('express-session'); 
    const MongoStore = require('connect-mongo')(session); 
    
    app.use(session({ 
        secret: 'foo', 
        store: new MongoStore(options) 
    })); 
    

    二番目のオプションはpassport-jwtなど異なるパスポート戦略が必要です:あなたはすでに、共有データベースを持っているだけで店をインスタンス化し、例えば、アプリあなたにそれを渡すと

最初のオプションは以下の設定が必要です多分パスポートを完全に捨て、jsonwebtokenをカスタムミドルウェアで直接使用してください。

+0

素晴らしい詳細。本当にありがとう。 –

関連する問題