代码之家  ›  专栏  ›  技术社区  ›  ulu

设置“允许所有经过身份验证的用户”后无法访问Firestore

  •  0
  • ulu  · 技术社区  · 3 年前

    我正在我的Chrome扩展中初始化FireStore,就像他们在文档中解释的那样:

    import { initializeApp } from "firebase/app";
    initializeApp({apiKey:'...', ...});
    

    然后我打电话 setDoc 以存储文档。当我设置时一切都很好 allow read, write: true 在访问规则中。但当我把它改成 allow read, write: if request.auth != null ,我所有的Firestore请求开始失败 Error adding document: FirebaseError: [code=permission-denied]: Missing or insufficient permissions.

    我假设在初始化代码中提供我的Firestore API密钥和其他数据会自动对其进行身份验证。然而,由于某种原因,Firestore认为我的请求是匿名的。我该如何解决这个问题?

    这是我的配置:

    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if request.auth != null
        }
      }
    }
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   RafaelJan    3 年前

    这个 request.auth 检查请求是否来自firebase身份验证中经过身份验证的用户。

    Firestore API密钥只是将请求发送到正确的firebase项目,但它不会使 request.auth != null .

    您需要针对firebase身份验证进行身份验证,才能获得 request.auth!=无效的 。但在你的情况下,我认为你不希望用户进行身份验证,所以你需要一些其他安全规则来获得你真正想要检查的内容。