【发布时间】:2019-02-06 07:24:32
【问题描述】:
我正在尝试在 Firebase 中设置一些安全规则,但没有运气。基本上我需要根据用户的电话号码检查用户是否被阻止的天气。这是我目前所拥有的:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if exists(/databases/$(database)/documents/access/+17777777777);
}
match /globals/{document=**} {
allow read: if true;
}
match /requests/{document=**} {
allow write: if true;
}
}
}
如果我在规则本身中对数字进行硬编码,它会执行应有的操作。如果我使用$(reqest.auth.token.phone_number) 它不起作用。
allow read, write: if !exists(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number));
我也按照this question 尝试过get:
allow read, write: if get(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number)).blocked == true ||
get(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number)).data.blocked == true;
我的数据结构是这样的
access | +17777777777 | blocked = true
我也尝试过翻转结构:
access | blocked | +17777777777 = true
这是来自模拟器的身份验证负载
{
"uid": "19687a6s87d68as7d968as7d9a8sd",
"token": {
"sub": "19687a6s87d68as7d968as7d9a8sd",
"aud": "my-app",
"email": "",
"email_verified": false,
"phone_number": "+17777777777",
"name": "",
"firebase": {
"sign_in_provider": "google.com"
}
}
}
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security