Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase Firestore/Realtime DB:仅允许写入特定管理员用户_Javascript_Firebase_Firebase Authentication_Firebase Security - Fatal编程技术网

Javascript Firebase Firestore/Realtime DB:仅允许写入特定管理员用户

Javascript Firebase Firestore/Realtime DB:仅允许写入特定管理员用户,javascript,firebase,firebase-authentication,firebase-security,Javascript,Firebase,Firebase Authentication,Firebase Security,我已经建立了一个带有表单字段的基本客户端应用程序来输入一些数据。 我在前端只使用来自CDN的vanilla js和firebase SDK,没有任何后端。 我设法用电子邮件/密码创建了登录/注册,我可以将数据发送到RealtimeDB并取回数据 现在,我想将规则配置为只允许使用我的特定管理员用户(我)对数据库进行写访问,我之前在电子邮件中注册了该用户。 有没有办法只为我的电子邮件配置规则? 或者是一些令牌ID? 当我登录时,我会得到一个idToken(它包含我的邮件,我想它唯一地标识了我)。我是

我已经建立了一个带有表单字段的基本客户端应用程序来输入一些数据。 我在前端只使用来自CDN的vanilla js和firebase SDK,没有任何后端。 我设法用电子邮件/密码创建了登录/注册,我可以将数据发送到RealtimeDB并取回数据

现在,我想将规则配置为只允许使用我的特定管理员用户(我)对数据库进行写访问,我之前在电子邮件中注册了该用户。 有没有办法只为我的电子邮件配置规则? 或者是一些令牌ID? 当我登录时,我会得到一个idToken(它包含我的邮件,我想它唯一地标识了我)。我是否可以在后端数据库规则配置中检查我的邮件或该令牌ID?我该怎么做

这是我的注册/登录代码:

$("#register").submit(function(event) {
    event.preventDefault();
    let inputs = $("#register :input.form-control");
    console.log(inputs);
    var values = {};
    inputs.each(function() {
            values[this.name] = $(this).val();
    });

    axios.post(
        "https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=XXXX",values)
    .then(res => console.log("auth result:",res))
    .catch(err => console.log(err));
})

$("#login").submit(function(event) {
event.preventDefault();
let inputs = $("#login :input.form-control");
console.log(inputs);
var values = {};
inputs.each(function() {
        values[this.name] = $(this).val();
});
console.log("values:", values);
axios.post(
    "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=XXXX",values)
.then(res => console.log("auth result:", res))
.catch(err => console.log(err));
})

get:(同一组)但没有idToken atm:

axios.get("https://XXX.firebaseio.com/XXX.json")
.then(result => console.log(result))
.catch(err => console.log(err));

顺便说一句,使用tokenID发出请求的正确url是什么?

编辑:我尝试发布我自己的解决方案,因为我正在使用谷歌的特定REST路由来启用登录和注册,我只能在已经注册的管理员专用电子邮件中使用登录。然后,我得到一个idToken,我可以在客户端对其进行解码,因此我得到一个user.uid,我可以在我的前端对该uid进行硬编码(以始终检查该uid,然后才启用客户端公式编辑,例如),我可以用它将uid与数据一起传递。然后,在firebase后端,我可以检查uid是否与请求uid匹配(但我不确定该uid是如何发送的,可能会自动与请求一起发送?)

第二,我必须使用auth SDK,这可能更简单,但是我必须在前端显示我的firebase配置,但是如果我只对我进行写操作,并且可能只对注册用户进行写操作,这可能无关紧要? 但是这个配置可以用来创建任意的新集合,对吗?有人知道解决办法吗