考虑 TodoMVC 示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要向这个应用程序添加身份验证,我该如何处理用户的可见性 -即如果User1 添加待办事项,我想确保它只对他们可见,如果User2 登录,他看不到User1 的项目。我怎样才能做到这一点?
最重要的是——我想第二个问题与前一个问题有点相关——存储待办事项和用户以及每个待办事项的可见性的最佳方式是什么?
考虑 TodoMVC 示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要向这个应用程序添加身份验证,我该如何处理用户的可见性 -即如果User1 添加待办事项,我想确保它只对他们可见,如果User2 登录,他看不到User1 的项目。我怎样才能做到这一点?
最重要的是——我想第二个问题与前一个问题有点相关——存储待办事项和用户以及每个待办事项的可见性的最佳方式是什么?
假设我们正在讨论用于身份验证的简单登录,该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",
}
}
}