【发布时间】:2017-05-29 04:47:25
【问题描述】:
按照教程中的建议,我在我的网络应用中实现了 Firebase 身份验证:
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 上一样工作?
【问题讨论】:
-
有机会,您是否在 Safari 隐身模式下进行测试?如果是这样,请注意
localStorage大小在 Safari 隐身模式中为0。 -
不幸的是它不是私人模式
-
认证状态存储在localStorage中。如果您没有使用 Safari incognito,您能解释一下导致 localStorage 清除的原因吗?在页面加载时,Firebase 身份验证会在触发 onAuthStateChanged 侦听器之前检查用户是否仍然有效。如果用户被禁用或删除,它将从存储中清除。如果不是这种情况,则其他东西正在清除您的 localStorage。
-
设置一个演示页面来显示问题会很有用...
标签: javascript authentication firebase safari firebase-authentication