Javascript 我想在令牌过期时处理错误

Javascript 我想在令牌过期时处理错误,javascript,node.js,reactjs,react-native,jwt,Javascript,Node.js,Reactjs,React Native,Jwt,当accesstoken过期时,我想通过使用错误条件语句获取refreshtoken。但是当我运行代码并使accesstoken过期时,我不知道在哪里处理错误 我现在的目标是在令牌过期时获取一个错误,以便将错误字符串像这样写入控制台if(error){console.log(“error”)} 那么我如何修复代码呢 这是index.js中检查jwt令牌是否有效的代码 (index.js) (auth.js) 当令牌过期时,passport.authenticate('jwt')中间件显然不会出错

当accesstoken过期时,我想通过使用错误条件语句获取refreshtoken。但是当我运行代码并使accesstoken过期时,我不知道在哪里处理错误

我现在的目标是在令牌过期时获取一个错误,以便将错误字符串像这样写入控制台if(error){console.log(“error”)}

那么我如何修复代码呢

这是index.js中检查jwt令牌是否有效的代码

(index.js)

(auth.js)


当令牌过期时,
passport.authenticate('jwt')
中间件显然不会出错

您仍然可以通过传递
passport.authenticate()
自定义回调并检查其
info
参数来确定令牌过期场景,在这种情况下,该参数将具有
名称
属性
“TokenExpiredError”

app.get('/login', function(req, res, next) {
  passport.authenticate('jwt', function(error, payload, info) {
    if(error) {
      return next(error);
    }
    
    console.log(info.name)   // output: "TokenExpiredError"

    res.status(201).json(//..);
  })(req, res, next);
});
有关自定义回调模式的更多信息,请参见此处:


(结尾的自定义回调部分)

如果用户不在场,并且在您的
try,catch
中为false,您想返回一个错误,对吗?但是,即使令牌没有过期,info也会继续运行。
    router.post(
      "/me",
      // auth,
      passport.authenticate("jwt", { session: false }),
      async (req, res, next) => {
        try {
        console.log("?????")
          res.status(201).json(fullUserWithoutPassword);
        } catch (error) {
          console.error(error);
          next(error);
        }
      }
    );
app.get('/login', function(req, res, next) {
  passport.authenticate('jwt', function(error, payload, info) {
    if(error) {
      return next(error);
    }
    
    console.log(info.name)   // output: "TokenExpiredError"

    res.status(201).json(//..);
  })(req, res, next);
});