node.js - Firebase setCustomUserClaims 总是覆盖旧的
问题描述
在firebase中,我希望使用自定义用户声明来设置用户角色,以及用户能够访问的模块。
如果用户是管理员,自定义声明将是:
{isAdmin: true}
然后现在我授予管理员能够访问用户模块的权限,在我的云功能代码中:
exports.grantUserAccess = functions.https.onCall((data)=> {
return firebase.auth().setCustomUserClaims(data.uid, {
hasUserModule: true
}).then(() => {
return 'complete'
})
})
所以我期望的是:
{isAdmin: true, hasUserModule: true}
isAdmin: undefined
但是当我打印出用户声明时,似乎hasUserModule: true
它基本上覆盖了旧的声明,这是为什么呢?
解决方案
根据有关自定义声明的文档:
注意:此操作始终会覆盖用户现有的自定义声明。但是,如果在通过自定义身份验证登录的用户上定义了相同的自定义用户声明,则自定义令牌中定义的重叠声明具有更高的优先级,并始终覆盖通过此 API 在用户上定义的自定义用户声明。
所以,这是预期的行为。
推荐阅读
- spring-boot - 两次读取 apache HttpClient 响应
- docker - 在 Linux 环境下,ec2 上的 docker 无法连接到 X 服务器问题
- go - GRPC-GO:生成的 pb.go 文件中未显示客户端存根
- mysql - MySQL SELECT 带大小写以用文本替换整数字段
- python - 如何使用其他列表从列表中删除元素?
- github - 即使使用 oauth 令牌,Github api 也会返回错误的凭据
- node.js - 如何将大型 KML 文件解析为 JSON
- python - 熊猫数据框问题:试图在数据框的切片副本上设置一个值
- angular - 在 Angular 中观看模板参考值的成本是多少
- magento - 订单小计为 0 时出现 PayPal 10413 错误