使用Firebase进行秘密URL身份验证

时间:2018-03-24 23:05:17

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

我有一个使用Firestore和Cloud Functions的客户端Web应用程序。

我想设置规则,以便用户拥有用户能够写入的文档的秘密URL,而无需任何其他类型的登录或身份验证。像(伪代码,我只是组成request.params.secret_token):

service cloud.firestore {
  match /databases/{database}/documents {
    match /cities/{city} {
      allow read, write: if resource.data.secret_token == request.params.secret_token;
    }
  }
}

我对各种可用的身份验证选项感到困惑,并且无法通过最佳方式进行推理。

感觉接近的潜在选择:

    可能需要
  • Anonymous authentication,这可能会让我获得身份验证令牌。据我所知,如果没有其中任何一个,我就无法走得很远。
  • 使用custom claim,但它表示您只能在服务器端安全地设置它们。
  • 使用custom token,但如果我有一个预先存在的登录服务器组件,这似乎更适用。

1 个答案:

答案 0 :(得分:3)

  

如果用户具有用户能够写入的文档的秘密URL   它,不需要任何其他类型的登录或身份验证。

只需设置数据库规则,即允许任何人在该特定网页上的JavaScript中指定的路径上读取和/或写入数据。也许只需在您的firebase <script>标记后面的<script>标记中将数据库读取或写入。

但是,正如您所说,访问该页面/ URL的任何人都将能够读取和/或写入该特定节点,字段或文档中的任何数据。

像这样编辑firestore.rules文件,为所有人/所有人启用读写。 See Documentation

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write;
    }
  }
}