firebase - 有没有办法限制可以使用 Firebase 规则更改的值?
问题描述
我有一个 Firebase 文档(实际上,可能文档需要相同的东西),由于安全原因,我只允许从后端代码(又名 Firebase 函数)进行更新。我仍然希望连接的客户端能够读取这些数据,并在某些情况下更新数据,但仅限于有限的字段。
我当前的解决方案如下,基本上验证文档中的值不是请求中的更改。是的,这行得通,但我觉得这是有问题的,因为在添加新字段时很容易忘记更新规则,而且我还没有找到任何真正好的工具来编辑规则,这相当乏味。
这是我现在正在做的一个例子:
allow update:
if request.auth != null &&
request.auth.uid == resource.data.firebaseUID &&
resource.data.pendingDelete == false &&
// Some values are protected
resource.data.creditBalance == request.resource.data.creditBalance &&
resource.data.creditLimit == request.resource.data.creditLimit &&
resource.data.firebaseUID == request.resource.data.firebaseUID &&
resource.data.mostRecentTermsOfService == request.resource.data.mostRecentTermsOfService &&
resource.data.mostRecentTermsOfServiceAccepted == request.resource.data.mostRecentTermsOfServiceAccepted &&
resource.data.mostRecentTermsOfServiceAcceptedOn == request.resource.data.mostRecentTermsOfServiceAcceptedOn &&
resource.data.promotionCreditBalance == request.resource.data.promotionCreditBalance &&
resource.data.promotionCreditsExpiration == request.resource.data.promotionCreditsExpiration &&
resource.data.registeredOn == request.resource.data.registeredOn &&
resource.data.testRecord == request.resource.data.testRecord &&
resource.data.userOwnedCompanyID == request.resource.data.userOwnedCompanyID;
当我混合用户角色时,这变得特别难看。如果有某种方式可以说只能更改 X 值,那就太好了,这可能吗?
我曾考虑过使用其中的许多:
!("creditLimit" in request.resource.data)
但这似乎不起作用(PERMISSION_DENIED),但并没有好多少,因为看起来我仍然需要单独列出我不希望客户更新的所有值
我浏览了几篇文章,但大多数似乎相对有限,并且大多数似乎期望客户可以更改几乎任何值,例如:
解决方案
推荐阅读
- email - 自动打印电子邮件
- javascript - Why is my function returning undefined? JS
- facebook - Facebook 个人资料用户 ID 是否更改?
- node.js - Debugging mocha-cakes-2 with Visual Studio Code
- javascript - javascript csv strip out lines of all commas
- c - Creating Pipes with array in loop
- java - Dictionary Created from text file - contains() always returns false
- angular - 在打字稿中将类型作为值传递
- html - Nav bar text spills over when sidebar collapse to icons
- javascript - 使用 GetDerivedStateFromProps 初始化后将道具变为状态?