React NativeとRelayを用いたBack4Appユーザー認証
セッショントークンの値は現在のセッションを表し、ユーザーが認証されているかどうかを制御します。認証の瞬間に、この値はヘッダーパラメータに設定される必要があります。Relayでは、ヘッダーパラメータを処理するためにEnvironmentを使用するので、このファイル内にセッショントークンを挿入する必要があります。
ヘッダーにセッションを追加した後、各リクエストはBack4Appによって認証され、ユーザーはプライベートリソースにアクセスできるようになります。
いつでも、スタイルや完全なコードを確認するために、私たちのGitHubリポジトリを通じてこのプロジェクトにアクセスできます。
ヘッダーパラメータにセッショントークンを使用して、Back4Appでユーザーリクエストを認証します。
- Parse Server バージョン 3.10 以上を使用して Back4App で作成されたアプリ。
- このチュートリアルでは、Expo を React Native フレームワークとして使用します;
- このチュートリアルでは、Javascript をデフォルトの実装言語として使用します;
- このチュートリアルでは、Async Storage を使用します;
Async Storage、Redux、またはお好みのローカルストレージソリューションを使用できます。この値が環境で利用可能であることを確認してください。
次に、 最後のガイドコード を使用します。セッショントークンを取得し、この値を Async Storage を使用してアプリケーションに永続化する必要があります。
最初のステップは、Async Storage からセッショントークンを取得するための関数を環境ファイル内に作成することです。
非同期ストレージをインポートします:
次に、関数を作成します:
では、サインインコンポーネントを改善して、useStateフックを使用して管理するのではなく、セッショントークンを永続化します。このコンポーネントは、セッショントークンが永続化されているため、アプリを再読み込みしてもログイン状態を保持します。
サインインコンポーネントを開きます。onSubmitのonCompleted内で、セッショントークンを非同期ストレージに保存し、次の結果を得ます:
次に、onCompletedを改善します:
次に、SignInコンポーネントの宣言内で、セッショントークンのための新しいuseStateを作成します:
コンポーネントがマウントされるたびに呼び出されるuseEffectを追加し、セッショントークンがあるかどうかを確認します(getSessionTokenを環境ファイルからインポートします:
最後に、onCompletedを再度変更して、新しいuseStateを処理し、新しいコード行を取得します:
ユーザーのログインに関するuseStateを削除し、以下の両行をそれぞれの場所から削除します:
と
アラートを避け、ユーザーの情報とトークンをuseStateに設定し、その後Async Storageにトークンを保存します。
if文を変更して、セッショントークンを処理します。
すべての変更後、SignInコンポーネントは以下のようになります。
Sign Inコンポーネントの新しい変更をテストする時が来ました。誰もログインしていないことを確認するために、アプリケーションを終了して再度開いてください。
非同期ストレージをクリアすることも忘れないでください。次のメソッドを呼び出すことでできます。 AsyncStorage.clear() メソッドを使用して、実際の状態をクリアします。
再度ログインすると、次のメッセージが表示されます。
さて、アプリケーションのリクエストにセッショントークンをBack4App GraphQL APIに挿入しましょう。環境ファイルの中で、sessionTokenを取得し、それをヘッダーオブジェクトに追加します。ヘッダーの変数X-Parse-Session-TokenにsessionTokenを渡す必要があります。 ここでは、私たちがすでに作成したgetSessionToken関数を再利用します。
次に、fetchQuery関数の前に関数を作成し、以下のコードを貼り付けます:
上記の関数は、セッショントークンが存在する場合のみそれを取得します。次に、それをヘッダーオブジェクトに追加し、分解します。
ヘッダーのすぐ下に、リクエストを行うためのtry catchがあります。リクエストのHTTPステータスが401になる場合に処理するifをリクエストの後に設定しましょう。これは、実際のトークンがもはや有効でないことを意味します。したがって、ストレージをクリアし、現在のユーザーを終了します:
今、あなたのアプリケーションはBack4Appバックエンドからプライベートリソースを取得し始めることができます。そして、セッショントークンが存在しない場合でも、私たちはそれを渡さないので、壊れることはありません。
ユーザーのために望ましいアクセスレベルを保証するために、セキュリティメカニズムを構成することを忘れないでください。アクセスをよりよく理解するために、リンクを参照してください セキュリティドキュメントからParse。
このガイドでは、非同期ストレージを使用してセッショントークンを保存し、現在はログインしたユーザーが必要なリソースを取得し始めることができます。
次のドキュメントでは、ログインしたユーザーに関する情報を取得し、表示するためにuseStateを使用するのをやめるコンポーネントを準備しましょう。
ユーザーのサインアップについては、このチュートリアルのアプローチを使用してセッショントークンを処理できます。