Fis*_*egs 5 javascript firebase firebase-authentication
为了提高页面重新加载时反应应用程序的性能,我将用户凭据存储在本地存储上,并在注销时清除它们。但现在用户经常不注销,并且用户凭据可以在本地存储中保留很长时间,我认为这可能会导致一些安全漏洞?我不是 firebase 安全方面的专家,所以有人可以解释一下它是否安全吗?
firebase.auth().onAuthStateChanged(user=>{
if (user) {
localStorage.setItem('user', JSON.stringify(user));
} else {
localStorage.removeItem('user');
}
})
Run Code Online (Sandbox Code Playgroud)
在大多数平台上,Firebase 身份验证 SDK 已自动将用户的凭据存储在本地存储中,并在应用重新启动/页面重新加载时从那里重新加载。您在触发之前仍然看到页面重新加载延迟的原因onAuthStateChanged是,客户端会检查服务器以查看凭据是否(仍然)有效。
在 Firebase 检查凭据时,能够在页面加载时立即采取行动的一个简单解决方法是自行在本地存储中存储有关最后一次已知身份验证状态的值,并使用该值来确定您的初始操作。user这本质上就是您对问题中的对象所做的事情。
这没有什么问题,只要你明白第一次onAuthStateChanged触发时,数据可能与你存储的不同。通常不会,但也可能会,这就是 Firebase 必须首先检查凭据的全部原因。
另请参阅我昨天对此相关问题的回答:加载页面时 Firebase auth.currentUser 为 null,在页面加载几毫秒后调用 authstatechange 时加载用户
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |