Как проверить токен JWT для конкретных роутеров - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть маршрутизаторы типа.

/ auth / signIn

/ auth / signUp

/ user / all

/ user /: id

/ комнаты / все

/ комнаты /: 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."});
  });

Как правильно проверить токен для определенных роутеров?Особенно / пользователь / , / комнаты /

, но не для / auth / и производственный маршрут

Хочу отметить, что количество маршрутов со временем может увеличиться.

1 Ответ

1 голос
/ 26 сентября 2019

Вы можете использовать метод 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...