angularFire和身份验证

时间:2013-07-19 13:06:31

标签: angularjs firebase angularfire

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

除此之外 - 我想第二个问题与前一个问题有些相关 - 存储待办事项和用户的最佳方式以及每个待办事项的可见性是什么?

1 个答案:

答案 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",
       }
   }
}