这些规则是只有登录的用户才能访问实时数据库中以其用户ID命名的文档。我想问一下如何在Firestore中执行此操作,除了文档名称不是用户ID,而是用户名(这是电子邮件的第一部分)
在文档名称为uid
之前,我已经看到了这一点,但是我的文档名称是用户的用户名,并且该用户名在身份验证中存储为@
之前的部分电子邮件。
例如,我有以下用户:
john@gmail.com
jane@gmail.com
我的消防站是:
收藏:用户
john
jane
只有以john@gmail.com
登录的用户才能在用户中写入john文档。我不知道如何从auth
变量中提取电子邮件。
有没有一种方法可以将文件重命名为用户ID?
答案 0 :(得分:0)
我发现您可以使用request.auth.token['email']
来获取用户的电子邮件。我可以使用它来允许任何人阅读,只有未经身份验证的人才能创建,并且用于更新和删除用户只能更新/删除自己的文档(使用电子邮件):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{email} {
allow read;
}
match /users/{email} {
allow update, delete: if request.auth.token['email'] == email;
allow create: if request.auth.uid != null;
}
}
}