Firebase 身份验证:每次获取或设置 cookie 时都有 getIdToken?
Posted
技术标签:
【中文标题】Firebase 身份验证:每次获取或设置 cookie 时都有 getIdToken?【英文标题】:Firebase Auth: getIdToken on every fetch or set cookie? 【发布时间】:2020-10-15 18:39:06 【问题描述】:我目前正在开发一个 Next.js (React) 项目,我使用 Firebase Auth 进行身份验证。我使用它连接到 REST API 后端,该后端接收 Firebase 提供的用户令牌(通过 getIdToken()
)。
由于 IdToken 时常变化,我目前在发送 fetch
请求之前请求最新的 IdToken:
const fetcher = (url: string) =>
return user.getIdToken().then((token) =>
fetch(url,
method: "GET",
headers: new Headers(
"Content-Type": "application/json",
Authorization: `Bearer $token`,
),
).then((res) => res.json())
);
;
此设置确实有效,但我想知道它是否被认为是有效/最佳实践? 我看到很多使用 IdToken 设置 cookie 的示例(例如,firebase docs、next.js example)。
我明白为什么在使用 s-s-r 时,因为不能在那里调用 getIdToken()
。但我的应用程序只使用客户端数据获取。放弃目前使用 cookie 的方法对我有什么好处吗?
【问题讨论】:
【参考方案1】:Firebase 身份验证 SDK 已将令牌缓存在本地存储中,因此您无需再次将其缓存在其他地方。
实际上,令牌每小时刷新一次,Firebase Authentication SDK 会在后台自动刷新一次。如果您自己缓存令牌,您最终可能会使用过时的令牌。
因此,我建议您在需要 ID 令牌时始终致电 getIdToken()
。当然可以将它存储在一个变量中,并在单个代码块中使用它(几乎同时运行的代码)。
使用 cookie 将令牌传递给您的服务器很好,就像现在使用 Authorization
标头一样。后者更常见,但 cookie 也可以。
【讨论】:
“Firebase 身份验证 SDK 已将令牌缓存在本地存储中”--如果提供相关文档的链接,将不胜感激。以上是关于Firebase 身份验证:每次获取或设置 cookie 时都有 getIdToken?的主要内容,如果未能解决你的问题,请参考以下文章
React Native - Firebase 身份验证持久性不起作用