我曾尝试为管理员用户设置自定义声明,以便他们可以访问和更改9个实时数据库中的数据(自定义声明:"管理员":真)。
这9个数据库的安全规则是相同的,具有"admin"角色的用户可以写入和更改数据库中 "admin_controller" 的数据。但当我使用管理员帐户时,我只能更改数据库1的数据,而不能更改 db2 、3、4等数据(权限被拒绝)
以下是我的代码和安全规则:
- 后端代码:**
var admin = require("firebase-admin");
var app_firebase = admin.initializeApp({
credential: admin.credential.applicationDefault()
});
app.get('/setAdmin/:user_id', (req, res) => {
var user_id = req.params.user_id;
const additionalClaims = {
admin: true,
};
admin.auth().setCustomUserClaims(user_id, additionalClaims)
res.status(200).json({ message: 'successful' })
});
- 安全规则:**
"rules": {
".read": true,
"admin_controller": {
".write": "auth.uid !== null && auth.token.admin === true"
},
}
谢谢你。
1条答案
按热度按时间hyrbngr71#
Firebase项目中的每个“实时数据库”示例都有自己的安全规则集,因此请确保按照有关为每个示例部署安全规则的文档中所示更新所有示例的规则。