在安全规则中使用引用
Using Reference in Security Rule
假设有两个文档
/orgs/foo
/users/alice
和 /users/alice
有一个引用类型字段 org
引用 /orgs/foo
.
/orgs/foo
应该在 request.auth.uid == 'alice'
时可以访问。我该怎么做?
我猜是这样的,但我想不通。也就是说,如何获取引用文档的ID?
function isOrgMember(orgId) {
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
}
match /orgs/{orgId} {
allow read: isOrgMember(orgId);
}
我知道自最初的问题以来已经有一段时间了,但我遇到了类似的问题,希望这可以帮助您或其他人。
您的情况是:
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
但是 org
是一个参考,这(显然)意味着您也需要 get
它。试试这个:
get(get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org).id == orgId;
假设有两个文档
/orgs/foo
/users/alice
和 /users/alice
有一个引用类型字段 org
引用 /orgs/foo
.
/orgs/foo
应该在 request.auth.uid == 'alice'
时可以访问。我该怎么做?
我猜是这样的,但我想不通。也就是说,如何获取引用文档的ID?
function isOrgMember(orgId) {
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
}
match /orgs/{orgId} {
allow read: isOrgMember(orgId);
}
我知道自最初的问题以来已经有一段时间了,但我遇到了类似的问题,希望这可以帮助您或其他人。
您的情况是:
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
但是 org
是一个参考,这(显然)意味着您也需要 get
它。试试这个:
get(get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org).id == orgId;