Firebase Storage安全规则是否支持版本2?规则匹配差异咨询
Firebase Storage安全规则版本2相关问题解答
1. Storage安全规则是否支持版本2?
Firebase Storage安全规则完全支持版本2,你只需在规则的最开头添加声明:
rules_version = '2';
官方示例未普遍使用版本2只是文档更新滞后,不代表功能不支持。
2. Firestore与Storage规则行为差异的原因
你遇到的权限问题,核心是Storage规则未启用版本2:
- 你的Firestore规则明确声明了
rules_version = '2';,版本2的规则逻辑为:所有匹配请求路径的规则都会被评估,只要有一条规则允许访问,就会授予权限。因此非管理员访问someCollection时,尽管全局管理员规则不允许,但后续集合规则的允许条件生效,最终能正常读取。 - 而你的Storage规则未添加版本2声明,默认使用版本1。版本1的规则逻辑为:匹配到第一条符合路径的规则后立即停止评估。全局的
match /{allPaths=**}会优先匹配所有路径,非管理员不满足该规则的权限条件,后续针对/images/fruits/的规则根本不会被执行,导致无访问权限。
修正后的Storage规则(启用版本2)
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { function isAdmin() { return request.auth.token.admin == true; } function isSignedIn() { return request.auth != null; } match /{allPaths=**} { allow write: if isAdmin(); allow read: if isAdmin(); } match /images/fruits/{allPaths=**} { allow read; } } }
启用版本2后,规则会按OR逻辑评估所有匹配路径的规则,非管理员访问/images/fruits/路径时,后续的允许规则会生效,正常获取访问权限。
内容的提问来源于stack exchange,提问作者ctrl freak
相关产品推荐
相关产品推荐

