gpt4 book ai didi

javascript - 为 Firestore 数据库集合添加 notAuthenticated() 安全规则

转载 作者:行者123 更新时间:2023-12-04 07:21:53 28 4
gpt4 key购买 nike

我需要为未经身份验证的文档集合添加匹配数据库。这样做的正确方法是什么?
这是当前的安全规则:

service cloud.firestore {
match /databases/{database}/documents {
function authenticated() { return request.auth.uid != null }

match /users/{userId} {
allow get: if authenticated() && request.auth.uid == userId;
allow create: if authenticated() && request.auth.uid == userId;
allow update, delete: if authenticated() && request.auth.uid == userId;
}

match /users/{userId}/products/{productId} {
allow get: if authenticated() && request.auth.uid == userId;
allow list: if authenticated() && request.auth.uid == userId;
allow create: if authenticated() && request.auth.uid == userId;
allow update, delete: if authenticated() && request.auth.uid == userId;
}
}
}
我尝试添加它,但我仍然收到 Firestore 权限不足的错误:
    function notAuthenticated() {
return request.auth == null;
}

match /share/{id}/documents {
allow get: if notAuthenticated();
allow create: if notAuthenticated();
allow read: if notAuthenticated();
这是用于向 Firestore 添加“共享”的 JS 代码:
  const db = firebase.firestore()
const docRef = db.collection('share').doc(val)

docRef
.get()
.then(doc => {
if (doc.exists) {
console.log('Document data:', doc.data().id)
} else {

console.log('No such document!')
}
})
.catch(error => {
console.log('Error getting document:', error)
})
enter code here

最佳答案

您当前的代码专门只允许未登录 Firebase 身份验证的用户。因此它拒绝来自已登录用户的操作。
听起来您希望任何人都能够阅读该特定集合,无论他们是否登录 Firebase 身份验证。
最简单的规则是:

match /share/{id}/documents {
allow get: if true;
allow create: if true;
allow read: if true;
我绝对建议为 create 添加一些验证在这种情况下,与上述规则一样,任何人都可以(这是您想要的)将他们认为(您可能不想要)的任何数据写入您的数据库。

关于javascript - 为 Firestore 数据库集合添加 notAuthenticated() 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68447575/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com