Firebase 身份验证(多种类型的用户)

IT技术 reactjs firebase
2021-05-22 19:59:19

我正在开发一个 react.js 项目,它从 firebase 进行身份验证,但我有 3 种具有不同权限的用户(超级管理员、供应商管理员、供应商员工)。我如何从 firebase 验证它们并了解这是我的供应商管理员或供应商员工等????因为 firebase 只是对单一类型的用户进行身份验证!

2个回答

您可以通过Cloud Functions for Firebase在您自己的服务器上使用 Firebase Admin SDK通过自定义声明控制访问

使用如下方法为特定出价设置声明服务器端:

admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
});

然后使用将管理员和供应商管理员内容分开的结构来设置您的数据库:

/
   /admin
      /data for admins here
   /vendorAdmin
      / data for vendor admins here
   /staff
      // data for staff here, or perhaps this data is accessible to all since the admins may need access to it.

在 Firebase 控制台中,自定义规则以将这些位置限制为包含正确声明的位置:

{
  "rules": {
    "admin": {
      ".read": "auth.token.admin === true",
      ".write": "auth.token.admin === true",
    }
    "vendorAdmin": {
      ".read": "auth.token.vendoradmin === true",
      ".write": "auth.token.vendoradmin === true",
    }
    "staff": {
      ".read": "auth.token.staff === true",
      ".write": "auth.token.staff === true",
    }
  }
}

这是一个简化的示例,因此您必须进一步自定义它以满足您的应用程序的需求。

您可以users在数据库中维护一个表,每次注册用户时也只需将它们添加到那里,使用uid.