【问题标题】:Firebase: Does the auth.uid stay active across page tabs?Firebase:auth.uid 是否跨页面选项卡保持活动状态?
【发布时间】:2016-01-31 13:28:33
【问题描述】:

工具:Firebase 2.3.1

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

认证方法:authWithPassword()

我知道当前用户已在浏览器中登录应用程序。 我设置我的规则是希望用户打开会话后,他们可以访问该浏览器上任何选项卡中的所有房间数据。

但是,如果我尝试在同一浏览器的不同选项卡中获取下面的此 URL..

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 存储在我的程序中,对吗?

【问题讨论】:

    标签: security session firebase token firebase-security


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2017-06-19
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      相关资源
      最近更新 更多