我查看了 firebase 文档并发现:
The custom claims object should not contain any OIDC reserved key names or Firebase reserved names. Custom claims payload must not exceed 1000 bytes.
这里自定义声明被称为“自定义声明对象”,但我在哪里可以找到设置不是原始数据类型(int、float、string等)的值的示例:自定义声明(在文档和其他教程中)。现在我很困惑的是,对象指的是整套自定义声明或单个自定义声明。
简单地说,这是有效的:
admin.auth().setCustomUserClaims(uid, {endDate: new Date()});
或者一般情况
admin.auth().setCustomUserClaims(uid, {
key1: {
sub_key1: value1,
sub_key2: value2
},
key2: {
sub_key1: vlaue1
}
});
如果这无效,是否有任何方法可以将时间戳设置为自定义声明,以便我可以在安全规则中使用它来允许基于它的访问。
最佳答案
自定义声明接受任何有效的 JSON。这意味着您只能使用 JSON 类型,即字符串、数字、 bool 值、数组、对象。日期无效。相反,您应该存储日期的数字表示形式。自纪元以来使用毫秒是很常见的,例如您从Date.now()获得的毫秒数。 .
{ endDate: Date.now() }
关于javascript - Firebase 自定义声明允许使用哪些数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62751238/