我正在尝试为我正在开发的Web应用程序创建管理界面。我使用Angular和Angularfire2。我使用Firebase Firestore作为数据库。
我想了解如何在users集合中实现isAdmin标志,以便指定的用户可以访问管理功能。
任何人都可以阐明如何制定这个方法。我知道您可以在用户文档上设置安全规则。如果允许经过身份验证的用户读取和写入自己的文档,那么阻止他们更改isAdmin标志的原因是什么?
或者这是否真的像添加布尔键并在管理界面中切换一样简单?
谢谢, 沃尔特
答案 0 :(得分:3)
您可以使用Firebase Admin SDK从自定义服务器使用自定义身份验证声明。然后,您可以将这些声明合并到Firestore安全规则规则中。您可以通过自定义声明here找到有关控制访问权限的更多信息。例如,在Firestore规则中,您可以使用admin
自定义声明来限制对此文档的读取权限:
service cloud.firestore {
match /databases/{database}/documents/adminContent {
allow read: if request.auth.token.admin == true;
}
}
可以从自定义服务器或Cloud Functions for Firebase设置,如下所示:
// Set admin privilege on the user corresponding to uid.
admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
});