【发布时间】:2026-01-18 23:10:01
【问题描述】:
我们正在尝试为 google firebase realtimedb 编写规则,该规则仅允许用户在经过身份验证时读取和写入属于他们自己的 UID 的位置。 这是我们目前的规则:
{
"rules": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
还有我们的数据库结构:
{
"W48941DIDOIJ30" : {
"subscription" : {
"premium" : true
},
"watchlist" : []
}
}
当我们尝试为具有相同 UID 的经过身份验证的用户发出关注列表或订阅请求时,我们会遇到 401 错误。什么给了?
编辑: 这是我们调用 realtimeDB 的方法(我们使用的是 NUXT.js)
async getData () {
const messageRef = this.$fire.database.ref(this.currentUser.uid)
const idToken = await this.currentUser.uid // or this.currentUser.getIdToken()
const response = await axios.get(
messageRef.toString() + '.json',
{
headers: { Authorization: `Bearer ${idToken}` }
}
)
this.$store.commit('ON_WATCHLIST_CHANGE', response.data.watchlist)
if (response.data.watchlist.companies.includes(this.$route.params.company) || response.data.watchlist.drugs.includes(this.$route.params.comound)) {
this.$store.commit('CURRENT_PAGE_CHECK', true)
}
},
【问题讨论】:
-
您能否编辑您的问题以显示重现该问题的最少、准确的代码?请确保代码显示满足规则中的条件,例如在访问数据库之前记录 UID。\
-
@FrankvanPuffelen 刚刚添加了调用数据库的方法。谢谢!
-
@Joaquin684 如果问题解决,请添加答案。
-
@AbhiChitrapu 我认为 Joaquin 是说他们已经用请求的信息更新了问题,而不是他们找到了解决方案
标签: javascript firebase-realtime-database firebase-security