node.js - 检查护照jwt中jwt令牌是否已过期的正确方法
问题描述
我创建了一个中间件来检查jwt 令牌是否已过期。
由于某种原因,TokenHasExpiredError没有被拦截为passport.authenticate
.
这是我的中间件
import { Request, Response, NextFunction } from 'express';
import passport from 'passport';
import { ApiError } from '../classes/error';
const authJwt = (req: Request, res: Response, next: NextFunction) => {
passport.authenticate('jwt', function (err, user, info) {
// TokenExpiredError is not considered as an error?
if (err) return next(err);
if (!user) {
if (info.name === 'TokenExpiredError') {
return next(ApiError.jwtTokenExpired('Jwt Token Expired'));
}
return next(ApiError.unauthenticated('User is not authenticated'));
}
req.user = user;
next();
})(req, res, next);
};
export default authJwt;
我有一些问题:
- 从上面的代码中,为什么
TokenExpiredError
或任何其他错误没有被拦截为错误。 info
回调中的参数是什么?我在文档中找不到它。
解决方案
推荐阅读
- python - Discord.py 默认值(如果未给出)
- reactjs - 类型错误:运行时出现无法读取未定义的属性“地图”
- c# - Moq ReturnsAsync 无法将 lambda 表达式转换为类型“Foo”,因为它不是委托类型
- sql-server - 需要在 SSRS 报告的标题中添加动态列
- javascript - 使用 100% 宽度的画布缩放画布形状
- bootstrap-4 - 如何处理封闭应用程序中具有不同 Bootstrap 版本的 Web 组件应用程序?
- python - Jupyter notebook 禁止我通过 notebook 保存并启用令牌身份验证?我该如何解决?
- excel - 将数据从文本文件导入 Excel
- java - 无法使用来自 JNA 的 python cffi 调用 DLL 中定义的函数
- html - 我不能给包装器 div 一个背景颜色;有人可以告诉我为什么并帮助我吗?