使用 passport-jwt 时如何创建注销路由?

问题描述 投票:0回答:0

我正在尝试按照教程和代码学习更多关于使用 passport-jwt 和 mern 堆栈的身份验证的信息,来自这个博客教程:https://www.codingdeft.com/posts/react-authentication-mern-node-护照快递蒙戈/。当我使用用户名和密码登录时,它会给我一个令牌。并使用该令牌,当我尝试使用以下逻辑注销时。我得到错误:

TypeError: user.refreshToken.id(...).remove is not a function
.

我不明白如何解决这个问题。

router.get("/logout", verifyUser, async (req, res, next) => {
  const { signedCookies = {} } = req;
  const { refreshToken } = signedCookies;
  User.findById(req.user._id).then((user) => {
    const tokenIndex = user.refreshToken.findIndex(
      (item) => item.refreshToken === refreshToken
    );

    if (tokenIndex !== -1) {
      user.refreshToken.id(user.refreshToken[tokenIndex]._id).remove()
    }

    try {
      user.save();
      res.clearCookie("refreshToken", COOKIE_OPTIONS);
      res.send({ success: true, user: user.refreshToken._id })
    } catch (error) {
      res.statusCode = 500
      res.send(error)
    }
  });
});
javascript node.js passport.js mern
© www.soinside.com 2019 - 2024. All rights reserved.