gpt4 book ai didi

javascript - 如何检测 idToken 过期?

转载 作者:行者123 更新时间:2023-11-30 19:22:23 25 4
gpt4 key购买 nike

我有一个登录页面,可以使用signInWithEmailAndPassword() 使用 Javascript 客户端 SDK。

如果登录成功,用户将被重定向(连同 idToken)到成员(member)页面。

在服务器端(nodejs使用firebase admin SDK),成员(member)页面检查idToken的有效性,如果有效,则从Firebase获取用户特定的数据并显示在网页上。在成员(member)页面上,有很多数据可以查看/编辑/删除等。因此,用户可能会在此页面上花费一个多小时并不是不可想象的。

我的问题是,我找不到检测 idToken 是否已过期的方法。理想情况下,我想刷新并获得一个新的 idToken。那可能吗?如果那不可能,我想在 idToken 过期时将用户重定向到登录页面。

但我无法弄清楚如何实现其中任何一个。看起来 onAuthStateChangedonIdTokenChanged 在 idToken 过期时不会被触发。而且我无法像 firebase.auth().currentUser.getIdToken(true) 那样强制刷新 idToken。因为在成员(member)页面上,firebase.auth().currentUser 返回 null。

关于如何处理这种情况有什么建议吗?

谢谢。

最佳答案

使用 Firebase Node.js Admin SDK,您可以在调用 verifyIdToken() 时通过将 checkRevoked 参数设置为 来检查已撤销或过期的 ID token 是的

verifyIdToken(idToken: string, checkRevoked?: boolean): Promise<DecodedIdToken>

checkedRevoked: boolean
Whether to check if the ID token was revoked. This requires an extra request to the Firebase Auth backend to check the tokensValidAfterTime time for the corresponding user. When not specified, this additional check is not applied.

admin.auth().verifyIdToken(idToken, true)
.then(function(decodedToken) {
let uid = decodedToken.uid;
// ...
}).catch(function(error) {
// Handle error for expired ID token
});

或者,可以在客户端检查 ID token 负载声明。有关如何 Verify ID tokens using a third-party JWT library 的文档显示有效负载声明。

exp expiration time: Must be in the future. The time is measured in seconds since the UNIX epoch.

jwt.io引用支持客户端 token 验证的库。

另见:How to decode the JWT encoded token payload on client-side in angular 5?

关于javascript - 如何检测 idToken 过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57312411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com