我认为使用Firebase可以很简单,但是我还没有找到解决方案:
我的firestore数据库中有一个Admins集合,并且基本上想限制Firebase存储中的Images文件夹,因此只有Admins可以添加新图像。 安全规则不允许我执行“如果userID在数据库中,则允许创建”。
有人知道如何实现此功能吗?从其他问题来看,函数似乎可以做到这一点,但是我找不到如何使用函数上传图像的有效解决方案,更不用说基于数据库数据限制它了。
任何指针将不胜感激!
答案 0 :(得分:2)
我在类似情况下所做的事情是使用Cloud Function将管理员状态同步到Firebase Auth custom claims。简化的版本可能类似于:
exports.setAdminClaim = functions.firestore.document('admins/{uid}').onWrite(change => {
if (change.after.exists) {
return admin.auth().setCustomUserClaims(change.after.id, {admin: true});
}
return admin.auth().setCustomUserClaims(change.after.id, {admin: false});
});
这使您可以在存储规则中使用自定义声明:
allow write: if request.auth.token.admin == true