Firebase规则:如何阻止匿名访问?

Edu*_*chi 3 firebase google-cloud-firestore firebase-security-rules

阅读Firebase规则文档对于如何阻止匿名访问特定集合或文档我一无所获。

换句话说,我要阻止未登录的用户,并且我也要阻止以匿名身份登录的用户。我只允许用户以自己的身份登录(通过电子邮件,Facebook,Google,SMS等)。

我怎样才能做到这一点?

这是我想出的代码,不起作用:

    service cloud.firestore {
      match /databases/{database}/documents {
        }
        match /collectionExample/{documentExample} {
          allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;              
          allow read: if request.auth.uid == resource.data.userId;
        }
      }
    } 
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 6

我还没有尝试过,但是我怀疑您可以使用request.auth.token.firebase.sign_in_provider(请参阅的文档auth)。应该包含anonymous匿名auth 的值。因此,要允许为非匿名登录用户创建文档:

allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Run Code Online (Sandbox Code Playgroud)

或者,您可以将其更改为也只允许某些提供程序,并考虑firebase.sign_in_provider到文档中token的其他可能值。

  • 我使用`request.auth.token.firebase.sign_in_provider != 'anonymous'` 进行了测试,效果很好,谢谢 (3认同)