【问题标题】:Best way to list users with customClaims [closed]使用 customClaims 列出用户的最佳方式 [关闭]
【发布时间】:2018-12-19 14:16:14
【问题描述】:

我只是想在 Firebase 功能

中列出用户

如果是 admin (customClaims)

,我只想列出用户

现在我很喜欢这个和它的工作

exports.listAdmins = functions.https.onRequest(async (req, res) => {
  cors(req, res, () => {});
  const token = req.body.token;
  try {
    const decodedToken = await admin.auth().verifyIdToken(token);
    if (decodedToken) {
      let users = [];
      const list = async (nextPageToken) => {
        await admin.auth().listUsers(1000, nextPageToken).then(async (result) => {
          result.users.forEach((userRecord) => {
            const user = userRecord.toJSON();
            if (user.customClaims && user.customClaims.admin) {
              users.push(user);
            }
          });
          if (result.pageToken) {
            await list(result.pageToken)
          }
        })
      };
      await list()
      res.status(200).send({
        success: 'SUCCESS',
        users: users
      });
    }
  } catch (error) {
    res.status(500).send({error: 'SOMETHING_WRONG'});
  }
});

但是我想知道如果我有很多 100000 个用户,性能

有更好的过滤列表的方法吗?通过使用admin.auth().listUsers() ?

【问题讨论】:

    标签: javascript firebase firebase-authentication firebase-admin


    【解决方案1】:

    正如您从Auth.listUsers() 的 API 文档中看到的那样,只有 listUsers(),并且没有其他方法可以按任何标准过滤用户。列出许多用户显然是一种昂贵的操作。考虑改为将有关用户的信息存储在数据库中,并改为查询数据库。

    对于您认为任何 Firebase SDK 中缺少的功能,您也可以随时 file a feature request

    【讨论】:

    • 谢谢!,已提交请求。但我不确定这对另一个有用。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2015-01-07
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多