Firebase规则允许服务器写入

编程入门 行业动态 更新时间:2024-10-28 06:24:01
本文介绍了Firebase规则允许服务器写入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在用户注册后,我们为 / users 子项下的用户创建用户名。

如何设置我的规则,以便只有服务器可以创建新用户,并且用户数据不能被其他用户修改。

Javascript

< script> var ref = new Firebase(myapp.firebaseio); var usersRef = ref.child('users'); var usernameField = $('#usernameInput'); var emailField = $('#emailInput'); var passField = $('#passInput'); $('#submitBtn')。click(function(){ ref.createUser({ email:emailField.val(), password:passField.val() },function(error,userData){ if(error){ console.log(创建用户的错误:,error); } else { console.log(成功创建的用户帐户与uid:,userData.uid); usersRef.push({ uid:userData.uid, username:usernameField.val() }); } }); }); < / script>

现行规则:

{rules:{users:{.indexOn:username,$ uid:{.write:true, //授予读者使用电子邮件和密码登录的权限.read:auth!== null& amp ;& auth.provider ==='password'} } } }

解决方案 要设置一些内容,以便只有服务器可以创建新用户使用他们的 Server SDK 。这样,您可以设置仅适用于从服务器访问数据库的规则。

但是,如果您希望基于Web的管理用户界面创建新用户,您需要编写一个Node.js或Java后端Web服务器(使用Server SDK)。您不能使用客户端JS SDK或Firebase托管。

只需按照服务器端设置部分。 $ b

然后添加 databaseAuthVariableOverride 选项至 initializeApp : $ b

var firebase = require(firebase); firebase.initializeApp({ serviceAccount:path / to / serviceAccountCredentials.json, databaseURL:databaseName.firebaseio, databaseAuthVariableOverride:{ //可能使用更具描述性和唯一性的内容 uid:server-side-app} });

然后以下为您的规则(警告:未经测试):

{rules:{users:{.indexOn:username, //授权用户访问 //通过服务器SDK获得写权限.write: auth!= null&& auth.uid ==='server-side-app', //授予所有使用电子邮件/密码登录的用户的读取权限.read:auth!= null&& auth.provider ==='password'} } }

After a user registers, we create a username for the user under /users child.

How can I setup my rules so that only the server can create new users and user data cannot be modified by other users.

Javascript

<script> var ref = new Firebase("myapp.firebaseio"); var usersRef = ref.child('users'); var usernameField = $('#usernameInput'); var emailField = $('#emailInput'); var passField = $('#passInput'); $('#submitBtn').click(function() { ref.createUser({ email : emailField.val(), password : passField.val() }, function(error, userData) { if (error) { console.log("Error creating user:", error); } else { console.log("Successfully created user account with uid:", userData.uid); usersRef.push({ uid: userData.uid, username: usernameField.val() }); } }); }); </script>

Current rules:

{ "rules": { "users": { ".indexOn": "username", "$uid": { ".write": true, // grants read access to any user who is logged in with an email and password ".read": "auth !== null && auth.provider === 'password'" } } } }

解决方案

To set up something so that "only the server can create new users", you can access your database using their Server SDK. This way, you can set rules that only apply to access to the database from the server.

However, if you want a web-based UI for admins to create new users, you need to write a Node.js or Java backend web server (utilizing the Server SDK). You can't use the client-side JS SDK, or Firebase hosting.

Just follow the instructions in the Server Side setup section of their documentation.

Then add the databaseAuthVariableOverride option to initializeApp:

var firebase = require("firebase"); firebase.initializeApp({ serviceAccount: "path/to/serviceAccountCredentials.json", databaseURL: "databaseName.firebaseio", databaseAuthVariableOverride: { // maybe use something more descriptive and unique uid: "server-side-app" } });

Then the following as your rules (warning: not tested):

{ "rules": { "users": { ".indexOn": "username", // grants write access if the authenticated user is accessing // via the Server SDK ".write": "auth != null && auth.uid === 'server-side-app'", // grants read access to any user who is logged in with an email/password ".read": "auth != null && auth.provider === 'password'" } } }

更多推荐

Firebase规则允许服务器写入

本文发布于:2023-10-24 23:50:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1525347.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:规则   服务器   Firebase

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!