【问题标题】:Set createdBy field in document with current userId (auth.uid)使用当前 userId (auth.uid) 在文档中设置 createdBy 字段
【发布时间】:2020-03-20 15:05:14
【问题描述】:

我知道 Firebase 有 FieldValue 类,可用于生成例如写入文档时的服务器端时间戳 (link)。

将当前用户的 uid 插入文档的首选做法是什么?

让客户端提供该字段似乎允许滥用 - 除非我提供检查(新/更新)文档以匹配 request.auth.uid 的服务器规则,例如:

service cloud.firestore {
  match /databases/{database}/documents {
    match /broadcasts/{broadcast}/chatMessagesCollection/{message} {
      allow write: if request.resource.data.uid == request.auth.uid;
      allow read: if true;
    }
  }
}

我在网络上找不到任何关于让用户编写文档的用例——那么最好的方法是什么?

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-authentication firebase-security


    【解决方案1】:

    您现在使用安全规则执行的操作是强制提供的 UID 与当前用户匹配,这完全是正确的做法。真的没有比这更好的了(对于这个特定的用例),这是一种常见的做法。

    我什至在这个博客系列中写过它:https://medium.com/firebase-developers/patterns-for-security-with-firebase-per-user-permissions-for-cloud-firestore-be67ee8edc4a

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      相关资源
      最近更新 更多