考虑TodoMVC示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要为此应用添加身份验证,我该如何处理用户的可见性 - 即如果User1添加待办事项,我想制作确保它只对他们可见,如果User2登录,他不会看到User1的项目。我怎样才能做到这一点?
除此之外 - 我想第二个问题与前一个问题有些相关 - 存储待办事项和用户的最佳方式以及每个待办事项的可见性是什么?
答案 0 :(得分:2)
假设我们正在讨论Simple Login进行身份验证,user
对象将包含一个ID(使用自定义登录,您将确定内容)。按用户ID拆分待办事项,将它们存储在不同的路径中。
/todos/user_id/...
然后在安全规则中,登录后,auth
对象包含用户的ID,因此您可以按用户保护每条路径:
"todos": {
"$user_id": {
".read": "auth.id === $user_id",
".write": "auth.id === $user_id",
}
}
请记住,如果您打算使用多个提供商,那么您还需要按提供商对其进行拆分,因为ID只对给定的提供商而言是唯一的。
/todos/provider_id/user_id
"todos": {
"$provider_id": {
"$user_id": {
".read": "auth.id === $user_id && auth.provider === $provider_id",
".write": "auth.id === $user_id && auth.provider === $provider_id",
}
}
}