【发布时间】:2019-08-14 16:34:42
【问题描述】:
我有一个特定的用户角色,它只允许更新某些字段。
对于这种特殊情况,我的 Firestore 规则如下所示:
function isRoleUser () {
return request.auth.token.role == 'user'
}
function isRoleAdmin () {
return request.auth.token.role == 'admin'
}
...
allow update: if signedIn() && (
(
isRoleUser() && (
request.auth.uid == resource.id &&
!(request.resource.data.keys().hasAny(['disallowed1', 'disallowed2', 'disallowed3']))
)
) || (
isRoleAdmin()
)
);
我遇到的问题是,即使我没有更新不允许的字段,我仍然会收到提示用户权限不足的消息。
FirebaseError:权限缺失或不足。
但是,如果我删除以下行:
!(request.resource.data.keys().hasAny(['disallowed1', 'disallowed2', 'disallowed3']))
我可以按预期更新用户,但显然我会失去我想要施加的限制。我的规则有问题吗?如果是这样,我怎样才能阻止用户更新列出的字段?
谢谢!
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security