Firestore用户集合isAdmin实现Angular

时间:2017-12-01 19:25:29

标签: angular firebase google-cloud-firestore

我正在尝试为我正在开发的Web应用程序创建管理界面。我使用Angular和Angularfire2。我使用Firebase Firestore作为数据库。

我想了解如何在users集合中实现isAdmin标志,以便指定的用户可以访问管理功能。

任何人都可以阐明如何制定这个方法。我知道您可以在用户文档上设置安全规则。如果允许经过身份验证的用户读取和写入自己的文档,那么阻止他们更改isAdmin标志的原因是什么?

或者这是否真的像添加布尔键并在管理界面中切换一样简单?

谢谢, 沃尔特

1 个答案:

答案 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.
});