gpt4 book ai didi

javascript - 登录时或登录后检查 firebase auth 用户 Angular 色

转载 作者:行者123 更新时间:2023-11-30 19:20:06 25 4
gpt4 key购买 nike

我的 firebase 应用有两个不同的 Angular 色:useradmin。我在创建过程中分配了这些,具体操作如下:

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' })

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

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

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

// authenticating a user
const handle = firebase.auth().onAuthStateChanged(user => {
console.log('Authenticated user', user)

// do stuff
})

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

displayName
email
phoneNumber
photoURL
providerId
uid

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

最佳答案

尝试以下代码段:

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);
});

来源:

Firebase Auth

关于javascript - 登录时或登录后检查 firebase auth 用户 Angular 色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57561044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com