使用用户电子邮件作为唯一ID时如何设置Firebase规则?

dsunku

我正在使用Ionic Framework和Firebase开发应用程序。我在Firebase上具有以下数据结构:

Users {
  mary@fb,com: {
    Group: {
      group123: {
        Contacts: {[email protected], [email protected], etc. }
      }
      group456: {
        Contacts: {[email protected], [email protected], etc. }
      }
    }
  }
  [email protected]: {}
  [email protected]: {}
  etc.
}

应用程序上的用户可以创建群组并邀请他们的朋友加入群组。

我试图弄清楚如何使用Firebase规则授予“ [email protected]”,“ [email protected]”等访问路径Users / mary @ fb,com / Group / group123。我也无法给mary @ fb,com读写权限。如何使用以下规则使用自定义唯一ID(例如用户的电子邮件)?

{
  "rules": {
    "Users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}
加藤

uid应当避免绕过使用用户的auth作为唯一标识符,这可能只会让您难过。我会重新考虑这种方法,并鼓励其他人不要效仿。

假设您无法避免这种情况,那么将需要执行以下操作:

  • 实现自己的身份验证模式
  • 签署自己的令牌
  • 将其email作为令牌数据的一部分包含在内,或者根据您的用例(在问题中分享这一点很有帮助,请参阅XY问题),也许只是使用转义的电子邮件作为uid
  • 是指auth.email代替auth.uid你的安全规则

因此,在服务器/节点/ etc脚本中:

// after some auth process to verify 
// the user and obtain the email
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<YOUR_FIREBASE_SECRET>");
var token = tokenGenerator.createToken({uid: uniqueIdOrMaybeEscapedEmail, email: escapedEmailAddress});

在您的规则中:

".read": "$user_id === auth.email",

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用户的电子邮件在mongoDB中唯一?

如何绕过 DMARC 使用用户的任何电子邮件发送电子邮件

如何在Firebase中使用用户名,电子邮件和密码创建新用户?

使用户电子邮件唯一django

laravel。让用户使用非唯一电子邮件登录

Firebase-如何仅使用用户名(不输入密码/电子邮件)实施登录?

如何确保唯一的电子邮件,用户名将使用Mongoose进入MongoDB

修改联系表单以使用用户输入的主题作为电子邮件主题

Firebase:使用电子邮件ID作为密钥

如何使用Firebase signInWithCredentials()设置用户的显示名称和电子邮件

尽管电子邮件在 Mongoose 中设置为唯一,但仍可以使用相同的电子邮件创建多个用户

如何使用procmail向电子邮件主题添加唯一的数字|日期时间|消息ID

使用用户名(不是电子邮件)登录 Firebase

使用电子邮件地址作为唯一标识符而不是Shiro for Grails的用户名

如何创建登录但使用用户名或电子邮件和密码

如何添加 Firebase 安全规则以检查登录用户的电子邮件是否在列表中

在Asp.net mvc5中使用用户名代替电子邮件作为身份

如何从不存在的电子邮件(自动生成的唯一ID)发送电子邮件?

如何使用已注册电子邮件的Firebase Auth模拟Firebase数据库规则

用户身份验证以检查唯一的电子邮件

聚类分析 - 在 R 中更改详细信息(用户 ID、电话号码、电子邮件等)时查找实际唯一用户

如何在使用 Laravel 表单请求更新数据时验证电子邮件的唯一性?

如何在Laravel中验证正在更新用户的唯一电子邮件?

如何通过结合电子邮件和日期来获得“唯一”用户

使用唯一的内部电子邮件索引 Mongodb,无法提醒“用户已注册”

Symfony 4.2.3-用户向电子邮件域注册时设置ManyToOne ID

如何仅注册使用Firebase javascript中的电子邮件链接验证了电子邮件地址的用户?

当我在 ionic 中输入电子邮件时,我想从 firebase 获取用户 ID

在更新时验证唯一电子邮件,而忽略自己的电子邮件。在Laravel 5上