登录时或登录后检查 firebase 的 auth 用户角色

我的 firebase 应用程序有两个不同的角色:user和admin. 我在创建过程中分配了这些,具体操作如下:


const admin = require('firebase-admin')


...


const user = await admin.auth().createUser({

    email,

    emailVerified: true,

    password,

    displayName: name,

    disabled: false

  })


await admin.auth().setCustomUserClaims(user.uid, { role: 'user' })

对于创建管理员,我们显然也是这样做的,但最后一行变成如下:


await admin.auth().setCustomUserClaims(user.uid, { role: 'admin' })

这些单独的角色在 firebase 规则中使用,以防止用户访问某些集合以及某些云功能,以防止他们执行某些操作。


我想做的是在我的客户端应用程序上通过检查用户角色来限制对某些部分的访问。


就目前而言,当我进行身份验证时,我无权访问用户角色,因此我不知道如何根据他们的角色限制他们的访问权限。这是我的身份验证代码:


// authenticating a user

const handle = firebase.auth().onAuthStateChanged(user => {

    console.log('Authenticated user', user)


    // do stuff

})

这里的问题是,此时给我的用户对象onAuthStateChanged没有角色。从providerData属性中,我所拥有的是以下内容:


displayName

email

phoneNumber

photoURL

providerId

uid

问题是如何访问客户端应用程序上的用户角色以阻止某些类型的用户访问客户端应用程序的受限部分?


长风秋雁
浏览 167回答 1
1回答

慕标琳琳

尝试以下代码段:firebase.auth().currentUser.getIdTokenResult()  .then((idTokenResult) => {     // Confirm the user is an Admin.     if (!!idTokenResult.claims.admin) {       // Show admin UI.       showAdminUI();     } else {       // Show regular user UI.       showRegularUI();     }  })  .catch((error) => {    console.log(error);  });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript