我有两个单独的应用程序,一个应用程序仅适用于只能读取Firebase数据库和存储的普通用户,另一个应用程序用于将数据上传到Firebase。 我已经打开了Firebase规则“ Read,Write = true”。我只需要允许admin / upload应用程序将数据上传到数据库和存储中(如果可以使用一些简单的admin应用程序ID)。
我已经看过的帖子:
how-to-only-allow-one-admin-user-to-write-firebase-database allowing-specific-user-write-access
答案 0 :(得分:2)
步骤1:,您必须授权某个用户。为此,请转到: 开发->身份验证->添加用户
步骤2:您必须在Firebase中设置规则。
转到数据库->规则,并授予某些用户更改数据库的权限。
下面是用户更改“令牌” 字段的一组规则的示例:
{
"rules": {
"Tokens" : {
"$uid": {
".read": true,
".write": "auth.uid === $uid"
}
}
}
}
JavaScript代码示例:
var email = "XXX@XXX.XXX; //The user that you authenticated in Firebase
var password = XXXXXXXXXXX; //Password of that user
var uidValue = XXXXXXXXX;
const auth = firebase.auth();
//Sign in
const promise = auth.signInWithEmailAndPassword(email, password);
promise.catch(e => console.log(e.message));
//Add a realtime authentication listener
firebase.auth().onAuthStateChanged(firebaseUser => {
if (firebaseUser) {
const rootRef = firebase.database().ref();
const usersRef = rootRef.child('Tokens');
const uid = uidValue;
const daveRef = usersRef.child(uid);
daveRef.set({
id: 232 //New ID
});
}
else {
console.log("not logged in");
}
});
firebase.auth().signOut();
最后,firebase实时数据库具有以下字段:
"Tokens" : {
"[UID value (e.g: 123XXX)]" : {
"id" : "164"
}
}