0

工作,我有火力地堡权威性在我的web应用程序实现的建议教程:火力地堡验证不会在Safari

function initApp() { 
    firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      // User is signed in. 
      } else { 
       // No user is signed in. 
       console.log("no user signed in"); 
      } 
    }); 
} 

window.onload = function() { 
    initApp(); 
}; 

这完全适用于Chrome浏览器。用户身份验证状态持续存在于多个网页中。我可以在一个页面上登录,用户配置文件在下一页仍然可用。

但是,这在Safari中不起作用,用户firebase用户对象刚刚消失。在登录后,我通过将用户对象存储在Cookie或本地存储器中尝试了各种解决方法,但都没有工作。我如何在Safari(以及其他浏览器)上完成这项工作以及在Chrome上完成这项工作?

+1

任何机会,你是否在Safari隐身模式下测试它?如果是这样,请注意Safari隐身模式下的'localStorage'大小为'0'。 –

+0

不幸的是它不是私人模式 – c0rv0s

+1

验证状态存储在localStorage中。如果您未使用Safari隐身程序,您能否解释导致localStorage清除的原因?在页面加载时,Firebase Auth在触发onAuthStateChanged侦听器之前检查用户是否仍然有效。如果用户被禁用或删除,它将从存储中清除。如果情况并非如此,其他的东西就是清除localStorage。 – bojeil

回答

1

我想通了。当我从Finder本地存储加载网站时,并没有保存auth状态(我不知道为什么),但是当我上传网站并从它的URL访问它时,所有事情都按预期工作。