首页 > 解决方案 > 您可以使用 Firestore 读取请求发送数据吗?

问题描述

我想为未登录的用户提供通过发送的令牌查看其数据的选项,该令牌会在一段时间后过期。

令牌创建和发送部分已完成,现在我看到两个选项:在函数中执行所有操作或使用 firestore 规则。规则会更好,因为直接数据库读取更快。

例如,我有一个用户集合,其中的用户如下所示:

{
   name: 'test',
   token: '1234',
   expiresAt: <someTimeInFuture>
}

我的规则如下所示:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow get: request.auth.uid == userId;
      allow update: request.auth.uid == userId;

      allow list: if false; 
      allow create, delete: if false;

    }
  }
}

有没有办法扩展get规则,以便在读取请求中发送该令牌的用户可以查看数据。或者更好地说:我可以将令牌与我的读取请求一起发送,以便我可以在规则中查看它吗?

请记住,自定义声明不是一个选项,因为用户没有登录。

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


安全规则不支持客户端可以简单地在验证请求中发送自定义数据的想法。这实际上根本不是“安全的”。这就像要求某人提供可以在互联网上任何地方共享的密码。您将需要一个后端端点来执行此操作,但请记住,它也会有相同的安全问题。


推荐阅读