使用Firebase隐藏单个页面应用程序私有页面的最佳解决方案是什么?

时间:2016-01-05 12:51:13

标签: javascript html firebase firebase-authentication

我将通过一个示例更好地解释问题,在此Firebase官方示例中https://office-mover-demo.firebaseapp.com/我可以在控制台中使用简单命令无需登录即可显示隐藏页面:

 app.classList.remove('is-hidden'); 

是的,当然,只有用户成功登录才能访问firebase中的数据。所以我的问题是:只有在用户成功登录后才能显示html私有部分的结构吗? (仅限静态内容和firebase身份验证)

2 个答案:

答案 0 :(得分:2)

来自Firebase documentation on monitoring authentication state

// Create a callback which logs the current auth state
function authDataCallback(authData) {
  if (authData) {
    console.log("User " + authData.uid + " is logged in with " + authData.provider);
  } else {
    console.log("User is logged out");
  }
}
// Register the callback to be fired every time auth state changes
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.onAuth(authDataCallback);

在代码段调用console.log的位置,您可以轻松地显示/隐藏HTML。

答案 1 :(得分:1)

我对这个问题的解决方案 - 据我所知 - 是在用户登录时设置一个包含用户ID的cookie,或者通过额外调用Firebase,只有登录客户端可见的秘密。然后,我的服务器可以读取cookie并确定用户是否有权查看内容,然后才下载它。因此,我使用Firebase进行身份验证,但我自己的服务器用于授权。

它可以工作,我也可以使用这种方法将用户登录到我的服务器,就像我收到了一个Oauth令牌一样。

但是,由于缺乏cookie经验,我想知道这有多安全!