【问题标题】:Firestore offline scenario with user permissions具有用户权限的 Firestore 离线场景
【发布时间】:2019-06-06 12:26:58
【问题描述】:

Firestore 的离线层在联机时如何处理文档权限,具体取决于创建者。

场景

用户在离线时更新文档,只有他有权更新。他登出。设备上线。新用户登录。Firestore 在尝试上传离线更新的文档时会抛出权限被拒绝错误吗?

安全规则可以很简单:

match /users/{userUid} {
  allow update: if request.auth.uid == userUid;
}

Firestore 是否缓存创建每个文档的用户?

【问题讨论】:

    标签: google-cloud-firestore firebase-security


    【解决方案1】:

    在服务器上评估安全规则。这是他们真正安全的唯一方法。客户端上没有实施任何控制。如果用户碰巧在本地修改了文档,那么在检查本地缓存的数据时会出现该修改,但在同步时会在服务器上失败。

    【讨论】:

    • 一些附加说明:如果操作在服务器上被拒绝,客户端将在客户端上触发协调事件以更正状态。因此,如果您 listen for changes 并获得了一个 change.type === "added" 用于安全规则实际上不允许的文档写入,那么当写入被服务器拒绝时,您将获得一个 change.type === "removed"
    • @Doug Stevenson 关于我上面的例子,你是说服务器拒绝该文档,即使它对创建它的用户有效?
    • 客户端SDK只能使用当前登录用户的凭证。如果当前用户无法进行更改,则该更改无效。
    • 好吧,我想事情就是这样。但是,请考虑这是上述场景的功能请求。我们的应用程序是一台设备上的多用户;所以上述情况并非不可能。
    • 请向 Firebase 支持提出任何功能请求:support.google.com/firebase/contact/support
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2018-04-15
    • 2015-03-19
    • 2013-06-30
    • 2015-03-30
    相关资源
    最近更新 更多