首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复安全规则:更新文档安全规则

修复安全规则:更新文档安全规则
EN

Stack Overflow用户
提问于 2020-03-07 12:42:32
回答 1查看 59关注 0票数 0

我试图编写一个只允许添加特定类型值的安全规则。

这就是我现在拥有的:

代码语言:javascript
复制
allow update if 
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.sessionID == key2
    // THIS CHECKS IF THE USER IS ALLOWED TO UPDATE THIS DOCUMENT

    && request.resource.data.description is string
    && request.resource.data.endMo is number

    && request.resource.data.startMo is number

    && request.resource.data.openMO is bool

    && request.resource.data.pdf is string

    && request.resource.data.Adress == resource.data.Adress //USER can't update this field

    && request.resource.data.size() <= 40; 

如果所有字段都已填入,则此操作有效。

情境1 ->工程

原版医生

代码语言:javascript
复制
{
'description': 'helloworld',
'endMo': 12,
'startMo': 6,
'openMo': true,
'pdf': 'url',
'adress': 'myAdress',
}

 db.collection("myCol").doc("myDoc").update({  
    'description': 'helloworld2',
    }

情景2 ->不起作用

原版医生

代码语言:javascript
复制
   {
    'adress': 'myAdress',
    }

  db.collection("myCol").doc("myDoc").update({  
    'description': 'helloWorld',
    }

为什么规则不接受值的添加而只接受已经存在的值的更新?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 04:14:20

请记住,在更新成功后,request.resource.data始终包含文档中字段的所有。这包括文档中的所有现有字段。

在情况下进行更新是因为文档的新内容满足所有条件。

第二种情况下的更新不起作用,因为它失败了对文档中不存在的字段的所有检查,并且在更新中也没有提供。如果您希望第二种情况能够正常工作,就必须对规则进行编码,这样就不需要像现在这样的特定类型的缺失字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60577634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档