javascript - 将 firebase 用户凭据 token 存储在本地或 session 存储上是否安全?

标签 javascript firebase firebase-authentication

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

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

最佳答案

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

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

没有错,只要你第一次明白 onAuthStateChanged火灾,数据可能与您存储的不同。通常不会,但可能会,这就是 Firebase 必须首先检查凭据的全部原因。

另请参阅我昨天对这个相关问题的回答:Firebase auth.currentUser is null when loading the page, user loaded when authstatechange called after some milli seconds of page load

关于javascript - 将 firebase 用户凭据 token 存储在本地或 session 存储上是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170407/

相关文章:

php - 从通过 JSON 从 PHP/Cakephp 传递到 Javascript/Jquery 的嵌套数组中获取数据

javascript - 提交后如何获取发布日期?

ios - firebase 3 我们可以在 firebase.database().goOffline() 之后登录吗?

android - 火力地堡不工作。安卓

firebase-authentication - 无效的应用程序 ID : CHANGE-ME

javascript - 在内部函数中消除歧义

javascript - HTML5 Canvas - 动画未按预期工作

android - Firebase 身份验证电话重新注​​册

javascript - 在 javascript 函数中返回字符串时遇到问题

ios - Firebase 注册函数中无法将类型 'User?' 的值转换为预期参数类型 'User!' 错误