Firebase规则不起作用.即使我在Firestore中设置了规则,也会返回数据



我设置了Firebase函数来调用我的Firestore。我使用admin.auth()并返回数据。我在Firestore规则部分设置了自定义规则,但函数没有遵循规则,即当我在Postman中使用URL时,我不应该获取数据,因为它不满足"if read,write:if request.auth!=null"。我该如何解决这个问题?

这是我的Firebase功能代码:

const admin = require('firebase-admin');
module.exports = function(req, res) {
const uid = req.body.uid;
admin
.auth()
.getUser(uid)
.then(user => {
admin
.firestore()
.collection('discover')
.get()
.then(snapshot => {
res.send(
snapshot.docs.map(doc => {
const data = Object.assign({ doc_id: doc.id }, doc.data());
return data;
})
);
})
.catch(err => {
res.send({ message: 'Something went wrong!', success: false });
});
})
.catch(err => {
res.send({ error: 'Something went wrong!', success: false });
});
};

Firestore规则:

service cloud.firestore {
match /databases/{database}/documents {
match /users/{users} {
allow read: if request.auth != null;
}
match /discover/{discover} {
allow read: if request.auth != null;
}
match /favorites/{favorite} {
allow read, write: if request.auth != null;
}
}
}

我应该无法从Postman那里获得这些数据(因为我没有经过身份验证),但我仍在获得数据。如果用户没有登录,我不希望数据可以访问。

当您通过Admin SDK访问数据库时,或在任何其他使用服务帐户时,安全规则都不适用。使用poster(或任何其他HTTP客户端)根本不重要。在这里实际执行数据库访问的是Admin SDK。

相关内容

  • 没有找到相关文章

最新更新