Javascript 将firebase用户凭据令牌存储在本地或会话存储上是否安全?

Javascript 将firebase用户凭据令牌存储在本地或会话存储上是否安全?,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,为了在页面重新加载时提高react应用程序的性能,我将用户凭据存储在本地存储中,并在注销时清除它们。但是现在用户经常不注销,而且用户凭证会在本地存储中停留很长时间,我认为这会导致一些安全漏洞?我不是firebase安全方面的专家,所以有人能解释一下它是否安全吗 firebase.auth().onAuthStateChanged(user=>{ if (user) { localStorage.setItem('user', JSON.stringify(user)

为了在页面重新加载时提高react应用程序的性能,我将用户凭据存储在本地存储中,并在注销时清除它们。但是现在用户经常不注销,而且用户凭证会在本地存储中停留很长时间,我认为这会导致一些安全漏洞?我不是firebase安全方面的专家,所以有人能解释一下它是否安全吗

firebase.auth().onAuthStateChanged(user=>{
    if (user) {
        localStorage.setItem('user', JSON.stringify(user));
    } else {
        localStorage.removeItem('user');
    }
})

在大多数平台上,Firebase Authentication SDK已经自动将用户的凭据存储在本地存储中,并在应用程序重新启动/页面重新加载时从那里重新加载。在触发
onAuthStateChanged
之前,您仍然会看到页面重新加载延迟,这是因为客户端会与服务器检查凭据是否(仍然)有效

当Firebase检查凭据时,在页面加载时能够立即采取行动的一个简单解决方法是将有关上次已知身份验证状态的值存储在本地存储器中,并使用该值确定初始操作。这基本上就是您对问题中的
user
对象所做的

这并没有什么错,只要您知道第一次触发
onAuthStateChanged
时,数据可能与您存储的数据不同。通常不会,但可能会,这就是Firebase必须首先检查凭据的全部原因


另请参见我昨天对这个相关问题的回答:

我建议将persistent更改为
persistent.SESSION

firebase.auth().setPersistence(firebase.auth.auth.Persistence.SESSION)

是的,这并没有涵盖整个问题(因为用户也可能无法关闭浏览器),但这是有意义的。

如果我没有弄错的话,firebase默认会解决这个问题。不