【发布时间】:2018-07-20 11:37:42
【问题描述】:
我的 Firebase 网络应用需要管理员访问权限,即 UI 应该只为管理员显示一些内容(“管理员”部分)。我想出了以下方法来授权 UI 仅为有效管理员显示管理部分。我的问题是,好还是坏?这是一种合理的授权方式吗? ...有很多方法可以做到这一点。这种特殊方式需要我在安全规则中配置管理员(与 db/firestore 中的节点/树相比)
我的想法是,如果 .get() 由于未经授权的访问而失败,我会告诉我的应用程序逻辑用户不是管理员,如果 .get() 成功,我的逻辑会显示“管理员”部分。当然,“部分”只是由数据库填充的 HTML 骨架/空元素,因此即使最终用户破解了 JS/逻辑,也不会存在真正的数据 - 只有空的“管理部分”框架。
function isAdmin(){
return new Promise(function(resolve, reject){
var docRef = firebase.firestore().collection("authorize").doc("admin");
docRef.get().then(function(result) {
if (result) {
resolve (true);
}
}).catch(function(error) {
resolve (false);
});
});
}
firestore 规则通过 UID 指定“管理员”。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid == "9mB3UxxxxxxxxxxxxxxxxxxCk1";
}
}
}
【问题讨论】:
标签: javascript firebase firebase-authentication google-cloud-firestore firebase-security