当我使用用户电子邮件作为唯一 ID 时如何设置 firebase 规则?
How to set firebase rules when I use user email as the unique ID?
我正在使用 Ionic Framework 和 Firebase 开发应用程序。我在 Firebase 上有以下数据结构:
Users {
mary@fb,com: {
Group: {
group123: {
Contacts: {email1@gmail.com, email2@gmail.com, etc. }
}
group456: {
Contacts: {email3@gmail.com, email4@gmail.com, etc. }
}
}
}
leo@fb.com: {}
wayne@fb.com: {}
etc.
}
该应用的用户可以创建群组并邀请他们的朋友加入群组。
我正在尝试弄清楚如何使用 Firebase 规则让 "email1@gmail.com"、"email2@gmail.com" 等访问路径 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
作为唯一标识符,这可能只会让您感到难过。我会重新考虑这种方法并鼓励其他人不要效仿。
假设您无法避免这种情况,那么以下内容将是必要的:
- 实施您自己的身份验证模式
- sign your own tokens
- 包括
email
作为令牌数据的一部分,或者根据您的用例(在问题中分享这个有很大帮助,请参阅 XY Problem)可能只是使用转义电子邮件作为 uid
- 参考
auth.email
代替安全规则中的 auth.uid
因此,在 server/node/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",
我正在使用 Ionic Framework 和 Firebase 开发应用程序。我在 Firebase 上有以下数据结构:
Users {
mary@fb,com: {
Group: {
group123: {
Contacts: {email1@gmail.com, email2@gmail.com, etc. }
}
group456: {
Contacts: {email3@gmail.com, email4@gmail.com, etc. }
}
}
}
leo@fb.com: {}
wayne@fb.com: {}
etc.
}
该应用的用户可以创建群组并邀请他们的朋友加入群组。
我正在尝试弄清楚如何使用 Firebase 规则让 "email1@gmail.com"、"email2@gmail.com" 等访问路径 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
作为唯一标识符,这可能只会让您感到难过。我会重新考虑这种方法并鼓励其他人不要效仿。
假设您无法避免这种情况,那么以下内容将是必要的:
- 实施您自己的身份验证模式
- sign your own tokens
- 包括
email
作为令牌数据的一部分,或者根据您的用例(在问题中分享这个有很大帮助,请参阅 XY Problem)可能只是使用转义电子邮件作为uid
- 参考
auth.email
代替安全规则中的auth.uid
因此,在 server/node/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",