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

时间:2018-11-21 19:46:35

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

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

换句话说,我想阻止未登录的用户,我也想阻止以匿名身份登录的用户。我想只允许以自己身份登录的用户(通过电子邮件,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;
        }
      }
    } 

1 个答案:

答案 0 :(得分:3)

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

allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';

或者,考虑到文档中标记firebase.sign_in_provider的其他可能值,您也可以更改它以仅允许某些提供程序。