【发布时间】:2021-07-10 14:02:55
【问题描述】:
目前,我正在使用此代码获取最新的 firebase 身份验证令牌,我在带有 Apollo 或 URQL 的标头中使用它来查询要验证的其他内容...
async getToken(): Promise<any> {
return await new Promise((resolve: any, reject: any) => {
this.afa.onAuthStateChanged((user: any) => {
if (user) {
user.getIdToken(true).then((token: string) => {
resolve(token);
}, (e: any) => reject(e));
}
});
});
}
我使用getIdToken(true) 始终确保我得到一个有效的令牌,因为令牌在一小时后过期,并且自定义声明可能会在某个时候更新。
但是,我的代码每次都会获取一个新令牌,而实际上我只需要在旧令牌过期时获取新令牌,或者令牌的自定义声明中有新信息。
我应该使用onIdTokenChanged() 的一些吗? firebase 会自动将所有这些存储在 firebase localstoreage db (IndexedDB) 中,还是我应该使用某种形式的 localstorage 并计算到期时间?
基本上,最大程度地减少令牌刷新次数以加快我的应用程序而不是每次都获取新令牌的最佳方法是什么?
谢谢,
J
【问题讨论】:
标签: firebase firebase-authentication jwt token