小编Nik*_*Nik的帖子

如何防止Firebase中出现重复的用户属性?

FirebaseSimpleLogin用来创建用户并处理身份验证.

当我尝试通过该$createUser()方法创建一个简单登录的新用户时,如果已经使用了电子邮件地址,firebase将不会创建用户.但是,$set()在创建它们之后,我还使用将创建的用户保存到我的firebase中,并将其user.uid用作密钥.当尝试写入数据库时​​,即使用户名不是唯一的,firebase也会保存记录,因为简单登录只需要电子邮件和密码.那么,当用户名不被用作用户对象的密钥时,如何验证用户名是否唯一?

我正在创建这样的新用户:

$scope.createUser = function() {
  $scope.auth.$createUser('trinker@gmail.com', 'password').then(function(user, err) {
    if (!err) {
      ref.child('users/' + user.uid).set({
        email: user.email,
        username: user.username
      });
      console.log("success!");
    }else{
      console.log(err.message);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我的用户对象如下所示:

{
  "users" : {
    "simplelogin:28" : {
      "email" : "trinker@gmail.com",
      "username" : "jtrinker"
    },
    "simplelogin:30" : {
      "email" : "test@gmail.com",
      "username" : "jtrinker"
    }
  }
}

}
Run Code Online (Sandbox Code Playgroud)

我需要使用uid作为每个用户的密钥,但我仍然需要用户名是唯一的.

如果一个对象中的属性对于另一个对象内的属性不是唯一的,我怎么能阻止firebase保存记录?

angularjs firebase firebase-security angularfire firebase-realtime-database

29
推荐指数
1
解决办法
1万
查看次数

如何设置 Firebase 数据库规则?如何防止被删除的用户写入 .write

介绍

我正在构建一个 Firebase Web 客户端应用程序。我想设置 Firebase 数据库规则。

  1. 新用户注册到 Firebase 应用。Firebase 给了他一个 user.UID。
  2. 然后,管理员删除禁用了 Firebase 管理控制台中的用户。
  3. 用户刷新客户端应用程序。
  4. (我发现)即使他的帐户已被删除/禁用,用户仍然可以写入 firebase 数据库。

.

目标/意图

我想设置一个规则,当用户不存在或在管理控制台/(身份验证/用户)中禁用时,阻止访问(.read 或 .write)firebase 数据库。

像这样的事情:

"rules":{
  "$uid":{
    ".write":"auth.isUserActive(auth.uid) == true"
  }
}
Run Code Online (Sandbox Code Playgroud)

.

FIREBASE 参考文档: https ://firebase.google.com/docs/reference/security/database/#auth

我怎样才能实现上述意图?我应该为 firebase DB 设置什么规则?

firebase firebase-security firebase-authentication firebase-realtime-database

5
推荐指数
1
解决办法
3231
查看次数