Android 在请求数据时以及在我们未使用firebase身份验证的情况下,如何为firebase firestore编写安全规则?

Android 在请求数据时以及在我们未使用firebase身份验证的情况下,如何为firebase firestore编写安全规则?,android,firebase,kotlin,google-cloud-firestore,firebase-security,Android,Firebase,Kotlin,Google Cloud Firestore,Firebase Security,我使用了Firebase Firestore进行数据库存储。我有一个场景,需要使用电话号码和OTP管理用户登录和注销。由于Firebaseauthentication使用电子邮件id管理身份验证,或者如果您想在每次需要使用OTP进行验证时将其与电话号码一起使用,这对我的应用程序来说是不可行的,所以,我创建了自己的身份验证过程,在该过程中,我使用OTP身份验证一次,并将用户数据存储到集合中,然后在用户登录后,我直接从集合中检查它 它现在工作得很好,但我在更改安全规则时遇到了问题,因为我想限制用户读

我使用了
Firebase Firestore
进行数据库存储。我有一个场景,需要使用电话号码和
OTP
管理用户登录和注销。由于
Firebase
authentication使用电子邮件id管理身份验证,或者如果您想在每次需要使用
OTP
进行验证时将其与电话号码一起使用,这对我的应用程序来说是不可行的,所以,我创建了自己的身份验证过程,在该过程中,我使用
OTP
身份验证一次,并将用户数据存储到集合中,然后在用户登录后,我直接从集合中检查它

它现在工作得很好,但我在更改安全规则时遇到了问题,因为我想限制用户读取数据库。但我不知道如何写它,因为到目前为止我已经找到了很多解决方案,但所有的请求都有auth,但由于我没有使用auth,我可能在请求中没有auth,并且可能会发现它为空

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write : if true;
    }
  }
}
我已授予所有收藏的读写权限,因此,任何拥有密钥的人都可以访问db,但我想使用安全规则来限制它,我已经找到了一种在创建或更新时限制用户的方法,因为我在请求设置或更新时将获得资源,但在读取或获取数据的情况下,它可能没有资源,因为我没有传递任何数据。所以,如果你知道我怎么写这样的规则,请帮助我。提前感谢…

对于,您的规则是:

allow read, write: if request.auth.uid != null;
如果没有Firebase身份验证,就不可能做到这一点,因为将有关用户的数据传递到安全规则中的唯一方法是通过Firebase身份验证


如果您有自己的身份验证机制,您可以将其作为一个应用程序来实现。在这种方法中,您使用服务器端代码根据您关于用户的信息生成Firebase令牌,然后该令牌中的信息在
auth.token

下的安全规则中可用,您试图对数据访问施加什么类型的限制,如果不是基于经过身份验证的用户?@FrankvanPuffelen如果用户没有经过身份验证,我不想向他/她提供读或写访问权限。