【问题标题】:Firebase custom claims as a list + security rulesFirebase 自定义声明作为列表 + 安全规则
【发布时间】:2020-10-11 10:45:12
【问题描述】:
我正在考虑以下安全规则 + 自定义声明的结构:
auth.token.buckets = ['bucket1', 'bucket2', 'bucket3']
安全规则如下:
allow read if storage/{$bucket} is in auth.token.buckets
这可能吗?如果是这样,正确的语法是什么?
【问题讨论】:
标签:
firebase
firebase-authentication
firebase-storage
firebase-security
【解决方案1】:
确实应该可以。
- 正确的运算符是
in,因为您的令牌包含 list 的键。
- 引用存储桶的正确方法是使用
bucket,不使用$ 或{}。
所以总的规则可能是这样的:
service firebase.storage {
match /b/{bucket}/o {
match /{path=**} {
allow read: if bucket in auth.token.buckets;
}
}
}
请注意,您必须将存储桶的全名存储在令牌中,例如your-project-name.appspot.com