Firebase:auth.uid是否在页面标签中保持活动状态?

时间:2015-10-31 02:46:18

标签: security session firebase token firebase-security

工具:Firebase 2.3.1

问题类型:为当前在会话中的用户设置安全规则

身份验证方法:authWithPassword()

我知道目前用户已在浏览器中登录该应用。 我制定了规则,期望一旦用户打开会话,他们就可以访问该浏览器上任何标签中的所有房间数据。

然而,如果我尝试在同一浏览器的其他标签中提取以下网址

https://myfirebaseurl.firebaseio.com/rooms.json

..我会回来的

{
  "error" : "Permission denied"
}

这很奇怪,因为在我打开我的应用程序或刷新页面的任何选项卡中,我的程序中的URL工作得很好

例如,这不会引发任何错误:

var firebaseRoomsRef = new Firebase("https://myfirebaseurl.firebaseio.com/rooms")//fetch just fine

以下是规则:

 {
     "rules": {
         "rooms": {
              ".read": "root.child('users/'+auth.uid).exists()",
         }
 }

所以我的主要问题是: 是否只发生错误,因为我试图像这样直接调用URL json?或者我的应用是否采取了不同的方式,允许其访问消息?

一个问题: 当我成功调用authWithPassword()时,Firebase会自动将“auth”存储为我的程序中的令牌或cookie吗?

1 个答案:

答案 0 :(得分:4)

是的,只是因为您尝试直接打开网址而发生错误。当您直接在浏览器中打开该网址时,除非您append an auth query parameter,否则不会发送任何身份验证数据。

https://myfirebaseurl.firebaseio.com/rooms.json?auth=CREDENTIAL

当您在应用内进行身份验证时,Firebase会自动将身份验证作为令牌存储在localStorage 仅适用于托管该应用的域,以便返回的用户保留其会话。