【发布时间】:2018-05-17 17:14:08
【问题描述】:
在我的项目中,我想通过检查用户的 uid 是否是该文档的子集合(包含该文档的所有成员)的一部分来控制对文档的访问。 当我想用 exists() 方法检查这个时,它不会在应该授予权限时授予权限。
match /events/{season}/events/{code} {
function isVV (season, code) {
return exists(/databases/$(database)/documents/events/$(season)/events/$(code)/vv/$(request.auth.uid));
}
allow read: if isVV(season, code);
当我用我当前正在测试的值替换 $(code) 时,规则通过并且一切都按预期工作。当我使用变量时,它不会。
有任何 Cloud Firestore 规则专家可以帮助我吗? 也许有更好的方法来做到这一点?
【问题讨论】:
-
修改函数参数的名称是否有效?例如,
function isVV (userseason, usercode)。可能参数名称与match语句设置的变量冲突。 -
很遗憾没有。通过为代码输入一个静态值,我确认季节变量正在工作。我又试了一次,但没有雪茄。感谢您的建议!
-
如果您直接从规则中调用
exists(),结果是否相同? --allow read: if exists(...); -
是的,结果相同:/
-
运气好了吗???
标签: firebase google-cloud-firestore firebase-security