0

考虑 TodoMVC 示例(https://github.com/firebase/angularFire/tree/gh-pages/examples/todomvc),如果我要向这个应用程序添加身份验证,我该如何处理用户的可见性 -即如果User1 添加待办事项,我想确保它只对他们可见,如果User2 登录,他看不到User1 的项目。我怎样才能做到这一点?

最重要的是——我想第二个问题与前一个问题有点相关——存储待办事项和用户以及每个待办事项的可见性的最佳方式是什么?

4

1 回答 1

2

假设我们正在讨论用于身份验证的简单登录,该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",
       }
   }
}
于 2013-07-19T15:01:55.577 回答