問題タブ [mongodb-realm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
345 参照

authentication - メール/パスワード認証後にユーザーを自動ログインする方法

私は現在、NextJS、ApolloClient、および MongoDB + MongoRealm を使用して、ブログ サンプル アプリを作成しています。NextJS スケルトンは、フレームワークの公式ページのチュートリアルの後に構築されました。現時点では、新しいユーザーは「pages/signup」にあるサインアップ フォームにアクセスしてサインアップできます。資格情報を入力すると、ホームページにリダイレクトされます。次に、新たにサインインしたユーザーは、別のページ ('pages/login' ルートに関連付けられているページ) にアクセスする必要があります。このページには、電子メール/パスワード認証を担当するログイン フォームが含まれています。また、ユーザーのメール アドレスに確認メールを送信するように Realm を設定しました。電子メールには、確認を処理する NextJs アプリからのカスタマイズされたページへのリンクが含まれています (サインインを要求した後、ユーザーも確認する必要があります)。

これでワークフローが確立されます。ただし、ユーザーがログインした直後に自動的にログインしたい(アカウントを作成するときに、サインインしてログインページにアクセスする必要がないようにするため)。

私が直面している問題は、ユーザーの確認を処理する React コンポーネントが、ユーザー インスタンスの電子メールとパスワードにアクセスできないことです。ユーザーの資格情報にアクセスせずに、ユーザーをログインする方法が必要です。

以下では、そもそもなぜこのアクセス制限が発生するのかを正確に説明しようと思います。「_app.js」全体がいくつかのカスタム プロバイダーにラップされていますが、できるだけシンプルにしようとしているので、このトピックに必要なものだけを示します。

私のsignup.jsファイルは次のようになります。

私の login.js ファイルは同じ概念に従って構築されています。唯一の違いは、「signUpAndRedirect」が「authenticateAndRedirect」に置き換えられていることです。

そして、これが私の confirm.js ファイルで、確認 URL からトークンと tokenId を抽出します。このコンポーネントは通常、クライアントが電子メールを受信し、確認リンク (基本的には /confirm の形式で、各トークンは文字列であり、Realm によって URL に追加されます) をクリックしたときにのみレンダリングされます。

そして最後に、カスタマイズされたプロバイダーを通じてアクセスできるサインアップ、ログイン、確認の方法を簡単に見てみましょう。私はそれらが正しく動作することを確信しています:

currentUser は基本的に Realm.app.currentUser を表し、プロバイダーによって _app に提供されます。

したがって、問題は、私の Confirm コンポーネントがメールとパスワードのフィールドにアクセスできないことです。兄弟コンポーネント間でデータを渡すために useContext フックを使用しようとしましたが、NextJS ページ全体で機密データを渡したくないため、このアプローチをすぐに放棄しました (パスワードを使用する必要がある唯一の場所は、 MongoDB POST リクエスト (Realm Web によって暗号化されるため)。

この問題を解決する方法はありますか? たぶん、まったく異なるアプローチですか?

事前にどうもありがとうございました!どんな助けでも大歓迎です!

0 投票する
1 に答える
435 参照

authorization - Mongodb レルムでサードパーティ サービスへの API リクエストを承認する

ユーザーが Google でログインし、Realm の Webhook/サードパーティ サービスに接続できるようにする React アプリを構築しています。サービスは、ユーザーが所有するデータのみを返す必要があります。

Google で OAuth 2 をセットアップし、ユーザーの access_token を取得してから、それをヘッダー (URL パラメーターも試しました) で Webhook に渡します。しかし、次のようなエラーが返されます。

400「認証方法が指定されていません」-「無効なパラメーター」。

多くのテストを行った結果、Realm の問題であることがわかりましたが、原因がわかりません。

Postman で Google で認証し、そこから次のようにリクエストを送信しようとしました。

しかし、同じエラーが発生します。

Realm では、認証プロバイダーとして「Google」を有効にしています (認証は Webhook による認証ではなく機能します)。