gpt4 book ai didi

javascript - 注销后,我的 firebase idToken 是否仍然有效?

转载 作者:行者123 更新时间:2023-12-05 01:36:58 24 4
gpt4 key购买 nike

我的 firebase 前端有以下代码:

  document.querySelector('#sign-out').addEventListener('click', () => {
firebase.auth().signOut().then(() => {
document.location = '/sign-in';
}, (error) => {
console.error('Sign Out Error', error);
});
})

这似乎有效。我看到网络请求成功,并且重定向到 /sign-in

但是,当我导航到 /chatroom 时,我被视为已登录。我的 python/flask 后端在端点上有以下代码:

@app.route("/chatroom")
def chatroom():
if 'idToken' in request.cookies:
id_token = request.cookies.get("idToken")
try:
decoded_token = auth.verify_id_token(id_token)
except:
print("INVALID TOKEN")
return redirect(url_for("sign_in"))

return render_template("chatroom.html")
else:
return redirect(url_for("sign_in"))

当我点击此路径时,Firebase 不会将用户重定向到 /sign-in,而是验证 token 是否有效,因此我可以继续,即使我已经注销。

我错过了什么?

编辑:

出于调试目的将代码更改为:

firebase.auth().signOut().then(() => {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log('still signed in');
} else {
console.log('signed out');
}
});
}, (error) => {
console.error('Sign Out Error', error);
});

它输出signed out.....所以我很困惑。

最佳答案

注销不会使 token 失效。它只会导致 SDK 忘记它,因此它不会自动刷新或传递给其他 Firebase 产品。旧 token 的有效期最长为 1 小时,直到需要刷新为止。如果不刷新,则验证失败。

如果您将 ID token 保存在 cookie 中,您还应该将其从 cookie 中删除以有效退出,这样它就不会传递到您的后端。

关于javascript - 注销后,我的 firebase idToken 是否仍然有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61584121/

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