Как можно направить URL-адрес поиска, в который встроена строка запроса?

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

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

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

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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
34
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Ответ принят как подходящий

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

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

Пожалуйста, проголосуйте и отметьте как правильный ответ, если это решит вашу проблему. Чтобы другие могли этим воспользоваться.

narayansharma91 28.05.2019 09:33

@camelCase Пожалуйста, проверьте, полезно ли это сейчас.

narayansharma91 30.05.2019 12:19

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

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

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

если hasParams true, то следующий('маршрут')

если hasParams false, то next()

Другие вопросы по теме