gpt4 book ai didi

Firebase 使用 auth.uid 作为键并向它及其子项添加规则

转载 作者:行者123 更新时间:2023-12-02 06:58:34 25 4
gpt4 key购买 nike

我有一个数据结构,可以将用户的数据添加到他们的唯一 ID,如下所示。

"users" : 
{
"user_id":
{
"name":"John Doe",
"email":"email@example.com",
"account":"limited",
"avatar" : "this will be a base64 data string"
}
}

我想拒绝用户列出其他用户,我还希望登录用户根据从 auth.uid 获得的“user_id”访问他们的数据

我尝试了一些规则:

{
"rules" :
{
"users" :
{
".read" : "false",
".write" : "auth != null && !data.exists() && newData.exists() ",
".validate" : "newData.child('user_id').hasChildren(['name', 'email', 'account','avatar'])",
"user_id" :
{
".read" : "auth.uid === user_id",
".write" : "false",
"avatar" :
{
".write" : "!data.exists() && newData.exists() && auth.uid === user_id",
".read" : "auth.uid === user_id"
}
}
}
}
}

现在请记住,“user_id”可以是任何东西,它会根据用户而变化,我该如何实现呢?您对我解决此问题的方法有其他建议吗?

最佳答案

您需要仔细查看此处的 Firebase 文档:https://www.firebase.com/docs/security/guide/user-security.html

您需要使用通配符路径来表示每个用户,如下所示:

{
"rules": {
"users": {
"$user_id": { //this is the WILDCARD path
// grants write access to the owner of this user account
// whose uid must exactly match the key ($user_id)
".write": "$user_id === auth.uid"
}
}
}
}

通配符路径说明:https://www.firebase.com/docs/security/api/rule/path.html

最后,我不建议以这种方式存储电子邮件,因为无论如何都可以通过 simpleLogin 访问它。

关于Firebase 使用 auth.uid 作为键并向它及其子项添加规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26279357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com