2013-07-19 36 views
0

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

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

回答

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