我的 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 userconst handle = firebase.auth().onAuthStateChanged(user => { console.log('Authenticated user', user) // do stuff})这里的问题是,此时给我的用户对象onAuthStateChanged没有角色。从providerData属性中,我所拥有的是以下内容:displayNameemailphoneNumberphotoURLproviderIduid问题是如何访问客户端应用程序上的用户角色以阻止某些类型的用户访问客户端应用程序的受限部分?
1 回答
![?](http://img1.sycdn.imooc.com/545863aa00014aa802200220-100-100.jpg)
慕标琳琳
TA贡献1830条经验 获得超9个赞
尝试以下代码段:
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);
});
添加回答
举报
0/150
提交
取消