Firebase是否有任何技巧{ merge: true }
可以设置额外/更多自定义声明而不删除/覆盖旧变量?
复制步骤:
admin.auth().setCustomUserClaims(uid, { a: 'value' }) // Run this first
admin.auth().setCustomUserClaims(uid, { b: 'value' }) // Then run this after
结果:
{ b: 'value'}
预期结果:
{ a: 'value', b: 'value' }
还是我做错了什么?
FirebasesetCustomUserClaims
状态文件:
- customUserClaims:Object
开发人员声明要设置。如果传递null,则会删除现有的自定义声明。传递大于1000字节的自定义声明有效负载将引发错误。自定义声明会添加到用户的ID令牌中,该ID令牌会在每个经过身份验证的请求中传输。对于与概要文件不相关的访问用户属性,请使用数据库或其他单独的存储系统。
从此描述尚不完全清楚,但是“如果传递null,则删除现有的自定义声明”这样的语句表明,每次调用,自定义声明都会被完全覆盖setCustomUserClaims
。
因此,需要将自定义声明设置如下:
claims = {
a: 'value',
b: 'value'
}
admin.auth().setCustomUserClaims(uid, claims)
addCustomUserClaims
可以创建一个辅助功能以合并到新的声明中。
async function addCustomUserClaims(uid, claims) {
const user = await admin.auth().getUser(uid)
let updated_claims = user.customClaims || {}
for (let property in claims) {
if (Object.prototype.hasOwnProperty.call(claims, property)) {
updated_claims[property] = claims[property]
}
}
await admin.auth().setCustomUserClaims(uid, updated_claims)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句