【发布时间】:2021-02-21 22:36:27
【问题描述】:
当前设置
我正在为我的后端使用云功能和 admin sdk。前端是 React、Firebase Auth (web sdk) 和 redux firebase 的组合,用于身份验证。目前,我为我的 react 应用程序的特定组件的每个请求强制刷新令牌并将令牌保存到本地存储。
推理
最初,我想我可以简单地在前端的 index.js 中监听身份验证状态的变化,然后相应地刷新令牌,即 firebase.auth().onAuthStateChanged 我的应用程序上的一些进程可能需要很长时间(即上传内容) 并且我注意到在初始登录或注销之外的任何时候都不会触发身份验证状态的更改。
例如,用户在令牌设置为过期前 1 分钟开始上传内容。上传后的最终 API 请求将失败,因为它们在令牌过期后完成。令牌没有得到更新,请求失败到我的后端,因为 403 未经授权。解决方案是在第一次加载这些组件时使用currentUser.getIdToken(true)。因此确保新令牌始终可用。
问题
这种方法是否存在安全风险?如果是,我该如何减轻它们,或者是否有更好的方法来持久化令牌?我很担心让用户能够无限期地刷新他们的令牌。
【问题讨论】:
标签: firebase firebase-authentication