2013-04-09 44 views
2

我正在使用Firebase简单登录使用电子邮件/密码验证。我在/ id/username中存储一个名为'username'的变量,以便每个用户都有唯一的名称。但是,用户可以编辑该位置的值并输入现有的用户名。有没有办法禁止用户更改他们的用户名到现有的用户名?即如果/ anyid/username/JOHN存在,则不允许更改。有没有可以为此编写的规则?使用Firebase的用户名简单登录(电子邮件/密码)

预先感谢您。

回答

4

是的!您可以简单地拥有一个.write规则,该规则要求该位置当前不存在任何数据。例如:

{ 
    "rules" : { 
    "$id" : { 
     "username" : { 
     ".write":"!data.exists()" 
     } 
    } 
    } 
} 
+0

嘿,谢谢你的回复!但是,如果没有通过JS控制台分配用户名,某人无法创建帐户: var chatRef = new Firebase('https://whatever.firebaseio.com'); var authClient = new FirebaseAuthClient(chatRef,function(error,user){ (..) }); 然后为自己指定他们想要的任何用户名,即使其他人已经拥有另一个ID了吗? – Gino 2013-04-09 19:57:26

+0

您可以有其他规则来验证auth值与正在写入用户信息的内容相同。这里有一些更复杂规则的示例:https://github.com/firebase/firefeed您还应该观看我们的屏幕录像,以指导您了解安全规则的工作原理:https://www.firebase.com/docs/security- quickstart.html – 2013-04-10 04:47:03

+0

为什么您使用写操作而不是验证操作?谢谢您的帮助! – Crashalot 2017-11-01 07:16:14

相关问题