Я работаю над экспресс-приложением, и у меня есть два URL-адреса GET. Один извлекает все ресурсы в базе данных, но защищен правами (требуется аутентификация и доступ администратора), а другой извлекает ресурсы на основе параметра поиска (строка запроса).
Маршрут, требующий аутентификации, выглядит так:
carRouter.get('/car', verifyToken, isAdmin, fetchAllCarAds);
Это означает, что администратор должен сначала войти в систему, а затем выполняется проверка, чтобы убедиться, что он действительно является администратором, прежде чем ему будет предоставлен доступ. Теперь у меня есть другой маршрут GET, который не требует аутентификации, например :
carRouter.get('/car?status=unsold', filterUnsoldCars);
.
Я понимаю, что Express не разрешает маршрутизацию на основе строк запроса, поэтому как мне убедиться, что запрос, не требующий аутентификации (строка запроса), доступен в запросе без строки запроса?
Я исправил это, поместив его перед функцией verifyToken, и это сработало. Я хотел бы узнать о других способах сделать это, если они есть. Спасибо
carRouter.get('/car', filterUnsoldCars, verifyToken, isAdminDummy, fetchAllCarAds);
Вы можете сделать следующие вещи, чтобы заставить его работать.
isAdmin
промежуточного программного обеспечения.@camelCase Пожалуйста, проверьте, полезно ли это сейчас.
Я не думаю, что вы строите правильную маршрутизацию, но вы можете использовать промежуточное программное обеспечение для проверки параметров запроса и обхода следующего назначенного маршрута. проверьте ниже объяснение маршрутизации для следующий('маршрут')
carRouter.get('/car', hasParams, verifyToken, isAdminDummy, fetchAllCarAds);
carRouter.get('/car?status=unsold', filterUnsoldCars);
если hasParams true, то следующий('маршрут')
если hasParams false, то next()
Пожалуйста, проголосуйте и отметьте как правильный ответ, если это решит вашу проблему. Чтобы другие могли этим воспользоваться.