【发布时间】:2023-03-28 20:05:01
【问题描述】:
按照https://firebase.google.com/docs/firestore/solutions/role-based-access 中给出的建议,我正在尝试使用 Firestore 规则仅返回当前用户具有某种权限的文档。
但是,当我实施该规则时,我收到了可怕的“[code=permission-denied]:缺少或不足的权限”错误消息,显然什么也没告诉我,我想知道是否有人能发现问题所在。
我的规则:
//Specific project rules - authorised users who appear in the project list
match /documents/{document} {
function isSignedIn() {
return request.auth.uid != null;
}
function getUser(rsc) {
return rsc.data.users[request.auth.uid];
}
function isOneOfUsers(rsc, array) {
return isSignedIn() && (getUser(rsc) in array);
}
allow list: if isOneOfUsers(resource, ['user','admin']);
数据将用户信息存储在文档上的一个字段中(在下面的示例中为 12345。该字段是 Object 类型的,它允许我放置一个键(在下面的示例中为用户 ID,76544)和一个值反对它,例如“管理员”。
我的数据:
documents/12345/users{76544:"admin"}
现在,当我登录并尝试获取文档列表时,我希望看到该文档返回,但我收到错误消息。我可以更改函数 getUser 以返回“用户”并且可以正常工作,所以问题出在评估的某个地方
rsc.data.users[request.auth.uid]
我通常会接受我正在尝试一些无法完成的事情,但它几乎是官方文档的直接副本,所以我一定遗漏了一些东西!
提前感谢您的帮助
【问题讨论】:
标签: google-cloud-firestore firebase-security