0

所以我一直在关注有关在 firebase 中管理会话 cookie 的文档,我几乎完全按照他们的示例进行操作(我在这里做了一些调整)。无论如何,除了注销用户外,一切都按预期进行,我通过清理 cookie 并使用该revokeRefreshTokens()方法(就像他们在文档中所做的那样)将用户注销:

router.get("/logout", async (req, res) => {
     const sessionCookie = req.cookies.session || "";
     res.clearCookie("session")
     try {
         const decodedClaims = await admin.auth().verifySessionCookie(sessionCookie);
         await admin.auth().revokeRefreshTokens(decodedClaims.sub);
         res.redirect("/login")
     } catch (e) {
         req.flash("error", "Already logged out")
         res.redirect("back");
     }
});

这里的问题是当用户注销然后立即尝试重新登录时,他不能,我在我的服务器上收到此错误:The provided Firebase ID token is expired,用户必须等待 30-50 秒才能重新登录。

所以我的问题是:

  • 我需要revokeRefreshTokens()注销用户吗?
  • 这种方法的行为(不允许用户重新登录 30s-50s)是有意的吗?

注意:在他们使用客户端 sdk 对用户进行身份验证的文档中,我使用了Auth REST API(当然在后端)。

4

0 回答 0