node.js - 如何检查特定路由器的 JWT 令牌
问题描述
我有类型的路由器。
/身份验证/登录
/auth/注册
/用户/全部
/用户身份
/房间/所有
/房间/:id
还有一条生产路线。
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, '../build', 'index.html'));
});
我有验证 JWTToken 的功能。
verifyJWTToken(req.headers.token)
.then((user) => {
req.user = user.data._doc;
next();
})
.catch((err: any) => {
res.status(403).json({message: "Invalid token."});
});
如何正确检查某些路由器的令牌?特别是/user/ , /rooms/
但不适用于/auth/和生产路线
我想指出,随着时间的推移,路线的数量可能会变得更大。
解决方案
您可以使用verifyJWTToken
方法作为中间件来验证特定路由的令牌。
对于房间 API,
router.get('/rooms', verifyJWTToken, (req, res) => {
// some operation
});
对于生产,您可以跳过中间件。
更新
对于两条路线/rooms/all
和/rooms/:id
,如果您有两条单独的路线,例如
router.get('/rooms/all', (req, res) => {
// some operation
});
和
router.get('/rooms/:id', (req, res) => {
// some operation
});
然后,您必须middleware
在两条路线上都使用。
但如果你的设置是这样的,
app.use('/rooms', roomRoutes);
现在在你的 roomRoutes 模块中,这两条路线存在,
router.get('/all', () => {});
router.get('/:id', () => {});
然后你只能使用一个middleware
,比如,
app.use('/rooms', verifyJwtToken, roomRoutes);
推荐阅读
- python - 在 Python 中使用 OpenCV2 去除接缝后如何判断图像的大小?
- sql - 大查询 - 加入两个表
- bash - git hook pre-push bash脚本验证标签
- symfony - Easyadmin 3:字段不是Doctrine关联,所以不能作为关联字段
- python - 试图让输出显示在水平线而不是每个字符的新行中
- mysql - Stamps.com 数据源中不提供 Mysql ODBC 连接器
- python - Pandas GroupBy 值的频率
- c# - 有没有更精细的方法将 Dataable 的 ColumnNames 转换为列表,其他我在 c# 中的方法?
- php - 遍历 XML 只给了我 PHP 上的第一个元素
- sql-server - 如何过滤子查询?