Firebase Admin SDK 角色

Firebase Admin SDK roles

我正在 NodeJS Express 中设置 Firebase Admin SDK API。

我添加了一个允许我创建用户的端点 -

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        res.status(200).json({ userRecord })
      })
  })

不过,我想做的是确保用户具有角色,以便我可以对某些服务提供授权检查。

我不明白如何实现这一点?我在想也许我在实时数据库中添加了一个条目,比如 -

users/uid/roles/<role name>: true

但是我不确定我是否遗漏了什么。另外,如果是这种情况并且我确实需要这样做,我会这样做 -

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        fbseAdmin.database()
          .ref('users')
          .child(`${userRecord.uid}/roles`)
          .set({
              admin: true
            })

        res.status(200).json({ userRecord })
      })
  })

至少可以说这似乎有点脆弱。

另外,由于这个条目不是用户对象的一部分,每次我想验证这个时我都需要在实时数据库中查找吗?对吗?

你应该看看如何设置 custom claim against a user

  route.post('/create', (req, res) => {
    const { email, password } = req.body

    fbseAdmin.auth().createUser({ email, password })
      .then((userRecord) => {
        fbseAdmin.auth().setCustomUserClaims(userRecord.uid, { admin: true })
          .then(() => {
            res.status(200).json({ userRecord })
          })
      })
  })