gpt4 book ai didi

firebase - 我无权访问 firestore 安全规则中的自定义声明

转载 作者:行者123 更新时间:2023-12-02 14:42:19 26 4
gpt4 key购买 nike

我已使用 firebase admin sdk 设置了自定义声明。我已成功使用它来控制前端甚至 RTDB 的访问,但我无法将它与 Firestore 数据库一起使用。这是我的安全规则:

service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.token.admin == true;
}
}
}

这是我的应用程序中的代码:

   const users = []
firebase.firestore().collection('users')
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
users.push(doc.data())
})
})
.then(() => {
commit('setUsersList', users)
commit('setLoading', false)
})
.catch(function (error) {
console.log('Error getting documents:', error)
commit('setLoading', false)
})

这是我收到的错误:

Error: Missing or insufficient permissions

最佳答案

我已经修正了错误。我的错误是我使用 admin sdk 设置权限,但我没有传递 bool 值而是字符串。

例如,我将用户设置为 uid '1',如下所示:axios.post('/admin/setadminprivileges/1/true')

在我的 firebase 函数中,我得到:

app.post('/admin/setadminprivileges/:id/:permission', (req, res) => {
const permission = req.params.permission // this is a string "true"
const uid = req.params.id // "1"
const payload = {admin: permission}
admin.auth().setCustomUserClaims(uid, payload)
})

现在工作正常了:

app.post('/admin/setadminprivileges/:id/:permission', (req, res) => {
const permissionString = req.params.permission
const permission = permissionString === 'true' // this is now a boolean
const uid = req.params.id
const payload = {admin: permission}
admin.auth().setCustomUserClaims(uid, payload)
})

无论如何,谢谢。我知道这一定是我自己的一个愚蠢问题,因为 Firebase 是一款可靠的产品。

关于firebase - 我无权访问 firestore 安全规则中的自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com