Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Firebase隐藏单页应用程序私有页的最佳解决方案是什么?_Javascript_Html_Firebase_Firebase Authentication - Fatal编程技术网

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

Javascript 使用Firebase隐藏单页应用程序私有页的最佳解决方案是什么?,javascript,html,firebase,firebase-authentication,Javascript,Html,Firebase,Firebase Authentication,我将通过一个示例更好地解释这个问题,在这个Firebase官方示例中,我可以通过控制台中的一个简单命令显示隐藏页面,而无需登录: app.classList.remove('is-hidden'); 是的,当然,只有用户成功登录,才能访问firebase中的数据。所以我的问题是:只有在用户成功登录之后,我才能做一些事情来显示html私有部分的结构吗?(仅适用于静态内容和firebase auth)来自: //创建一个记录当前身份验证状态的回调 函数authDataCallback(auth

我将通过一个示例更好地解释这个问题,在这个Firebase官方示例中,我可以通过控制台中的一个简单命令显示隐藏页面,而无需登录:

 app.classList.remove('is-hidden'); 
是的,当然,只有用户成功登录,才能访问firebase中的数据。所以我的问题是:只有在用户成功登录之后,我才能做一些事情来显示html私有部分的结构吗?(仅适用于静态内容和firebase auth)

来自:

//创建一个记录当前身份验证状态的回调
函数authDataCallback(authData){
if(authData){
console.log(“用户”+authData.uid+”使用“+authData.provider”登录);
}否则{
console.log(“用户已注销”);
}
}
//注册每次身份验证状态更改时要触发的回调
var ref=新的火基(“https://.firebaseio.com");
参考onAuth(authDataCallback);

当代码片段调用console.log时,您可以同样轻松地显示/隐藏HTML。

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

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


然而,由于缺乏饼干方面的经验,我想知道这有多安全

是的,我知道,我说的是使div的内容隐藏为私有,只有在身份验证过程为正时才解锁!如果这与在上面的
If(authData)
中显示/隐藏元素不同,那么我没有“private”和“unlocked”的意思。你必须更清楚,最好是在你的问题中包含一个。问题是清楚的,隐藏意味着仅在屏幕上不可见,私有意味着DOM在使用DevTool检查时也不可访问(例如,DOM私有的一部分只有在完成身份验证时才构建)。没有私有DOM,下载到用户浏览器中的所有内容都可以通过某种方式被用户发现。您确实可以根据需要加载或构造DOM片段。与显示/隐藏元素类似,您可以在上面的
if(authData)
的相关分支中下载/构建元素。谢谢,我知道这个解决方案可以很好地工作,但我正在寻找一个除了firebase之外不涉及后端的智能解决方案。谢谢
// 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);