Firestore 规则 - 按路径允许
Firestore rules - allow by path
我使用 Firebase 的 Firestore。我有一个名为“root”的集合,其中有一个名为“db”的项目。
我想允许所有人对该项目进行读写访问。
这是我的规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.path == 'root/db';
}
}
}
这条规则默认存在,除了这一行 request.path == 'root/db';
这是我的习惯。我试图设置一个时间戳规则并且它有效。但是这个按路径行不通。
这是我对浏览器的请求:
const ref = doc(dbApi, "root", "db");
console.log(ref.path);
let db: Database;
try {
db = (await getDoc(ref)).data() as Database;
} catch (err) {
console.log(err);
throw err;
}
ref.path
日志 root/db
和 err
日志 FirebaseError: Missing or insufficient permissions.
(在应用程序中使用“firebase”:“9.6.4”javascript 包)
我也试过一些变体 https://firebase.google.com/docs/reference/security/storage#path
与其使用 catch all (/{document=**}
) 然后过滤,不如在 match 语句处过滤:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /root/db { <-- change it here
allow read, write: if true;
}
}
}
虽然这可行,但您应该进一步限制规则以限制此文档的形状。如果您的数据库全部基于单个文档,请考虑使用 RTDB,因为它可以对数据库中的数据提供更精细的控制。
我使用 Firebase 的 Firestore。我有一个名为“root”的集合,其中有一个名为“db”的项目。
我想允许所有人对该项目进行读写访问。
这是我的规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.path == 'root/db';
}
}
}
这条规则默认存在,除了这一行 request.path == 'root/db';
这是我的习惯。我试图设置一个时间戳规则并且它有效。但是这个按路径行不通。
这是我对浏览器的请求:
const ref = doc(dbApi, "root", "db");
console.log(ref.path);
let db: Database;
try {
db = (await getDoc(ref)).data() as Database;
} catch (err) {
console.log(err);
throw err;
}
ref.path
日志 root/db
和 err
日志 FirebaseError: Missing or insufficient permissions.
(在应用程序中使用“firebase”:“9.6.4”javascript 包)
我也试过一些变体 https://firebase.google.com/docs/reference/security/storage#path
与其使用 catch all (/{document=**}
) 然后过滤,不如在 match 语句处过滤:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /root/db { <-- change it here
allow read, write: if true;
}
}
}
虽然这可行,但您应该进一步限制规则以限制此文档的形状。如果您的数据库全部基于单个文档,请考虑使用 RTDB,因为它可以对数据库中的数据提供更精细的控制。