首页 > 解决方案 > 如何检查特定路由器的 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/生产路线

我想指出,随着时间的推移,路线的数量可能会变得更大。

标签: node.jsexpress

解决方案


您可以使用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);

推荐阅读