Как можно направить поисковый URL, в который встроена строка запроса? - PullRequest
0 голосов
/ 28 мая 2019

Я работаю над экспресс-приложением, и у меня есть два GET URL. Один выбирает все ресурсы в базе данных, но защищен правами (требует аутентификации и доступа администратора), а другой выбирает ресурсы на основе параметра поиска (строки запроса).

Маршрут, требующий аутентификации, выглядит так:

carRouter.get('/car', verifyToken, isAdmin, fetchAllCarAds);

Это означает, что администратор должен сначала войти в систему, а затем выполнить проверку, чтобы выяснить, действительно ли он является администратором, прежде чем ему будет предоставлен доступ. Теперь у меня есть другой маршрут GET, который не требует аутентификации, как это :

carRouter.get('/car?status=unsold', filterUnsoldCars);.

Я понимаю, что Express не разрешает маршрутизацию на основе строк запроса, поэтому как мне обеспечить, чтобы запрос, не требующий аутентификации (строка запроса), был доступен в запросе без строки запроса?

Ответы [ 3 ]

1 голос
/ 28 мая 2019

Вы можете сделать следующие вещи, чтобы заставить его работать.

  • Проверить, существует ли строка запроса или нет внутри isAdmin middleware
  • Если строка запроса существует, пропустите проверку, которая имеетбыл реализован внутри промежуточного программного обеспечения.
  • Если строка запроса не существует, проверьте, является ли пользователь администратором или нет.
0 голосов
/ 28 мая 2019

Я не думаю, что вы строите правильную маршрутизацию, но вы можете использовать промежуточное ПО для проверки параметров запроса и обходов следующего назначенного маршрута. проверьте ниже маршрутное объяснение для next ('route')

Экспресс-маршрутизация

carRouter.get('/car', hasParams, verifyToken, isAdminDummy, fetchAllCarAds);
carRouter.get('/car?status=unsold', filterUnsoldCars);

если hasParams true, следующий ('route')

если hasParams false, next ()

0 голосов
/ 28 мая 2019

Я исправил это, поместив его перед функцией verifyToken, и это сработало.Я хотел бы узнать о других способах сделать это, если есть.Спасибо

carRouter.get('/car', filterUnsoldCars, verifyToken, isAdminDummy, fetchAllCarAds);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...