ReactJSアプリケーションをビルドする数週間後、認証を追加する時間。これは私にとって非常に混乱しているので、私はSOコミュニティにいくつかの助けを求めることにしました。Expressサーバ、Passportを使用したReactJSとリレーアプリケーションの認証方針
私のアプリケーションが構成されます:ポート3001
私はサーバーとクライアントの両方を同時に起動するスクリプトを用意しています(npm start
)ので、すべて正常に動作します。サーバがロードされ、クライアントがロードされ、ブラウザはポート3000で開き、ポート3001のサーバ上のRelayJsを使用してGraphQLデータを要求します。
LocalStrategyを使用して過去にPassport認証を使用しました。 Passportはデータベースに行き、ユーザー名とパスワードをチェックして、エクスプレスミドルウェアのルータを使用してリクエストをプロセスします。うまく動作しますが、サーバー側ではクライアント側ではありません。許可されていない、それは、ログインページにリダイレクトされます
:
私の目標は、ユーザーだせクライアントアプリケーション(今日はポート3000にブラウザを指して)、それらを作ることです。
認証された場合、ユーザーはアプリケーションにリダイレクトされます。
「私を覚えています」を使用すると、ユーザーはログインしなくても(同じブラウザで1日中)、アプリに戻ることができます。
ユーザーがユーザー名/パスワードを覚えていない場合は、リセットを要求し、新しい資格情報が電子メールで送信されます。
今のところ私はこれらのことがどのように連動するのか分かりません。 Passportはサーバー上で動作し、そのロジックはすべてクライアントで実行されます(MongoDBのユーザー情報の収集を除く)。
私は2つのアプローチを見ることができます:
a)に認証され、それは別の内部ポートで実行される実際のReactJSアプリケーションにプロキシする場合はexclusivellyポート3000上で認証を処理するプロキシサーバーを構築します。しかし、そうすることで、最初にポート3000に当たったときにユーザーがログインする方法を見つけることができません。create-react-app
がwebpack-dev-serverに埋め込まれているため、クライアントを変更する必要があります実際には取り出した後、クライアントのスクリプト内で何が起こっているのか分かりません)。要するに、私のアーキテクチャを変更する必要があり、混乱する必要があります。
b)ReactJSアプリケーションにPassportを追加します。これはパスワードがノード(サーバー側)上で実行されるようにビルドされているので機能しません。これが可能かどうか、それをどうやって行うのかは分かりません。
これらの「わかりにくく混乱している」アーキテクチャの後、私は何をすべきかを見つけることができません。
このシナリオでは、フォワードを移動する方法をいくつかアドバイスしてください。ヘルプは非常に感謝しています。
詳細情報@Andrija – KellysOnTop23
まあ、私はJWTとパスポートを使用しています。有効な資格証明を '/ login'ルートに送った後、Expressはトークンを返し、そのトークンをクライアントのローカルストレージに保存します。 Reactアプリケーションが '/ graphql'ルート上に作成するすべてのGraphQLリクエストのヘッダーにそのトークンを含めます。これは基本的にすべてのものです。 –