【发布时间】:2021-09-22 20:41:34
【问题描述】:
我编写了以下 firestore 规则,通过仅在调用者的 UID 与文档 ID 匹配时才允许请求来限制对用户集合的读取。用户集合的文档 ID 和 Firebase 身份验证中的 UID 之间存在奇偶校验。
function isAuthenticated() {
return request.auth.uid != null;
}
// Users collection
match /users/{userId} {
allow read: if isAuthenticated()
&& request.auth.uid == userId;
}
我在集合中有一个 ID 为 Eli90wRvWkfKcOfn1C4DBDqxQTz1 的文档。当使用相同的身份验证用户点击 Firestore 时,我收到以下错误:
如果我删除对request.auth.uid == userId 的检查,则会生成此规则并成功读取:
// Users collection
match /users/{userId} {
allow read: if isAuthenticated();
}
正在调用的查询是:
export const getUser = (uid: string) => {
return db.collection('users').where('id', '==', uid).limit(1).get();
};
我看到很多人在他们的规则中使用 UID 检查,但为什么它在我的情况下不起作用?
【问题讨论】:
标签: javascript firebase google-cloud-firestore firebase-security