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

Xav*_*hay 7 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

感觉接近的潜在选择:

  • 可能需要匿名身份验证,这可能会让我获得身份验证令牌.据我所知,如果没有这些,我就无法走得很远.
  • 使用自定义声明,但它表示您只能在服务器端安全地设置它们.
  • 使用自定义令牌,但是当我有一个预先存在的登录服务器组件时,这似乎更适用.

Ron*_*ton 1

如果用户有一个文档的秘密 URL,用户可以向该文档写入内容,而无需任何其他类型的登录或身份验证。

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

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

像这样编辑 firestore.rules 文件以启用任何人/所有人的读写。请参阅文档

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)