是否可以模拟经过身份验证的Firebase用户,以便在保留数据库规则的同时开玩笑地运行全面测试



我有一个Firebase实时数据库,其中包含一系列围绕基本用户身份验证的基本规则:

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$user_id" : {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid",
       }
    }
  }
}

这些规则取决于内置 Firebase 变量auth.uid,当用户使用任何给定提供商登录时,可以在开发/生产期间访问该变量。

但是,当我使用相同的规则对重复的数据库运行开玩笑测试时,我无法访问此auth.uid,因为没有实际用户登录。

有没有办法解决这个问题?一种在Firebase本身或通过我的客户端测试代码模拟某种测试用户的方法?

我希望测试在尽可能类似于常规数据库的数据库上运行。我不想在测试数据库上有不同的规则结构。

我想出的可能解决方案更像是一种解决方法:

  1. 设置一个测试环境变量,如 FIREBASE_TEST_UID
  2. 运行测试时引用此 uid。
  3. 手动更改将$user_id"auth.uid进行比较的规则,以将其与实际存储的FIREBASE_TEST_UID进行比较
  4. 现在,数据库受到保护,无法被公共非"身份验证"用户读取和写入,而规则结构保持相似,FIREBASE_TEST_UID是私有的(.gitignore env 文件(。

相关内容

  • 没有找到相关文章

最新更新