我有一个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本身或通过我的客户端测试代码模拟某种测试用户的方法?
我希望测试在尽可能类似于常规数据库的数据库上运行。我不想在测试数据库上有不同的规则结构。
我想出的可能解决方案更像是一种解决方法:
- 设置一个测试环境变量,如
FIREBASE_TEST_UID
。 - 运行测试时引用此 uid。
- 手动更改将
$user_id"
与auth.uid
进行比较的规则,以将其与实际存储的FIREBASE_TEST_UID
进行比较 - 现在,数据库受到保护,无法被公共非"身份验证"用户读取和写入,而规则结构保持相似,
FIREBASE_TEST_UID
是私有的(.gitignore env 文件(。