gpt4 book ai didi

javascript - Firebase自定义声明如何设置?

转载 作者:行者123 更新时间:2023-11-29 18:44:49 26 4
gpt4 key购买 nike

我正在为 Firebase 自定义声明而苦苦挣扎。

我测试了很多方法都没有用。显然,我错过了概念本身的一些重要内容。

所以我回到了根。来自 google 示例的脚本应该对新创建的用户应用海关规则

exports.processSignUp = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
const customClaims = {
param: true,
accessLevel: 9
};
// Set custom user claims on this newly created user.
return admin.auth().setCustomUserClaims(user.uid, customClaims)

});

然后在客户端上,我检查结果

firebase.auth().currentUser.getIdTokenResult()
.then((idTokenResult) => {
// Confirm the user is an Admin.
console.log(idTokenResult.claims)
if (!!idTokenResult.claims.param) {
// Show admin UI.
console.log("param")
} else {
// Show regular user UI.
console.log("no param")
}
})
.catch((error) => {
console.log(error);
});

一切都只是原始的复制粘贴仍然不起作用。我已经在本地机器上进行了测试(cors 可能有问题?)并进行了部署

最佳答案

这是一场比赛。如果函数先结束,您将获得更新的数据。

getIdTokenResult 方法会强制刷新,但如果自定义声明尚未准备就绪,则毫无意义。

您需要设置另一个数据控制结构来触发客户端的强制刷新。举例说明 rtd 的实时监听器;

root.child(`permissions/${uid}`).on..

监听器内部的逻辑是:如果该节点的值存在并且是一个大于某个阈值的数字,则触发用户身份验证刷新

在此期间,如果没有数据快照,用户界面可以反射(reflect)加载状态;如果数据快照存在但权限级别较低,则用户界面可以反射(reflect)非管理 View 。

在函数中,您必须在设置声明后设置节点:

..setCustomUserClaims(..).then(
ref.setValue(9)
);

我在 pastebin 上有一个更详细的例子

关于javascript - Firebase自定义声明如何设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594100/

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