如何检查特定路由器的JWT令牌

时间:2019-09-26 07:02:55

标签: node.js express

我有类型的路由器。

/ auth / signIn

/ auth / signUp

/用户/全部

/ user /:id

/ rooms / all

/ rooms /: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 / 生产路线

我想指出的是,随着时间的流逝,路线的数量会越来越大。

1 个答案:

答案 0 :(得分:1)

您可以使用verifyJWTToken方法作为中间件来验证特定路由的令牌。

对于Rooms 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);