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