我正在使用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] 删除。
我来说两句