簡體   English   中英

如何在 firebase auth 中獲取不同的用戶

[英]How to get different user in firebase auth

我正在開發一個應用程序,該應用程序的部分功能是管理員能夠登錄和重置其他用戶的密碼。 如何獲取當前登錄用戶以外的用戶?

resetForm.addEventListener('submit', (e) => {
        e.preventDefault();
        let newPass = resetForm['reset-password'].value;
        let firebaseUser = auth.user(docId);
        console.log(firebaseUser);
    });
    

我知道該代碼實際上不會重置任何密碼,我只是寫了該代碼以查看是否可以獲取已登錄的用戶以外的用戶。我運行了它,但沒有在控制台中看到用戶 UID,而是看到了這個:

未捕獲的類型錯誤:auth.user 不是 function

編輯:我創建了一個雲 function。 這是我的 index.js 文件的代碼:

var functions = require('firebase-functions');
var admin = require("firebase-admin");
var serviceAccount = require("/removed-for-privacy.json");
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://troop-30-elections-web-app.firebaseio.com"
});
    exports.resetPassword = functions.https.onCall((docId,newPass) => {
        console.log("step 2");
        admin.auth().updateUser(docId, {
            password: newPass,
        }).then(() => {
            const modal = document.querySelector('#modal-reset');
              M.Modal.getInstance(modal).close();
              resetForm.reset();
        });
    });

這是按下按鈕時運行的代碼:

resetForm.addEventListener('submit', (e) => {
        console.log("Step 1");
        e.preventDefault();
        let newPass = resetForm['reset-password'].value;
        const resetPasswordFunction = firebase.functions().httpsCallable('resetPassword');
        resetPasswordFunction(docId,newPass);
        console.log("Step 1.5");
    });

當我打開控制台時,沒有錯誤消息。 我看到了第 1 步和第 1.5 步。 沒有其他的。

在 Firebase Authentication 中無法識別應用程序管理員。 為此,您必須構建自己的基礎架構。

通常這意味着:

  1. 在受信任的環境(如您控制的服務器或雲功能)中,您使用管理員 SDK 來更改他們的密碼
  2. 然后將該代碼包裝到自定義 API 中,並公開給應用程序。
  3. 您從應用程序調用 API,傳遞登錄用戶的 ID 令牌。
  4. 在 API 中,您驗證 ID 令牌,並確保調用者已獲得操作授權。

不過,您在這里完全靠自己,因為您不能使用 Firebase 的內置密碼重置機制。 這僅對客戶端上的登錄用戶可用,以防止它被濫用給垃圾郵件用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM