#express
#экспресс
Вопрос:
Я учусь node.js и express.js в стремлении стать полнофункциональным разработчиком javascript. В настоящее время я изучаю express.js и идея промежуточного программного обеспечения.
Насколько я понимаю, промежуточное ПРОГРАММНОЕ обеспечение — это в основном функции, которые имеют доступ для изменения запроса и ответа в цикле запроса-разрешения. Это правильно?
Тем не менее, я немного не понимаю идею функции next(). Я понимаю, что она предназначена для вызова следующей функции промежуточного программного обеспечения в потоке функций промежуточного программного обеспечения, однако, откуда она берется. Где я могу найти его в express.js посылка.
Комментарии:
1. вам не нужно знать, где она находится, просто добавьте нужные вам промежуточные программы и затем вызовите ее.
Ответ №1:
Когда у вас будет больше промежуточных программ, они будут выполняться по порядку, и каждое промежуточное программное обеспечение передаст результат следующему промежуточному программному обеспечению. представьте, что у вас есть маршрут, доступ к которому могут получить только аутентифицированные пользователи.
router.get("/products", adminController.getProducts);
это говорит о том, что всякий раз, когда пользователь делает запрос /products
, запускайте контроллер для этого маршрута. Однако, если вы хотите показать этот маршрут только аутентифицированным пользователям, вы напишете пользовательское промежуточное программное обеспечение, убедитесь, что пользователь прошел аутентификацию, аутентифицирован ли пользователь adminController.getProducts
, в противном случае вы увидите сообщение об ошибке. Таким образом, вы будете размещать промежуточное программное обеспечение между ними.
router.get("/products", isAuth, adminController.getProducts);
Обратите внимание, что вы можете передать более одного промежуточного программного обеспечения. (AdminController.GetProducts также является промежуточным программным обеспечением, но я имею в виду, что помимо isAuth вы можете разместить столько, сколько захотите)
isAuth
будет что-то вроде этого:
export const isAuth = (req, res, next) => {
if (!req.session.isLoggedIn) {
return res.redirect("/login");
}
next();
};
Представьте, что вы настраиваете проект, основанный на сеансе. Когда пользователь войдет в систему, express-session
(вы познакомитесь) добавится session.isLoggedIn=true
к req
объекту. Поэтому, прежде чем пользователь попытается отреагировать на «/products», вы будете проверять, req.session.isLoggedIn
верно ли это. Если да, вы разрешите запустить следующее промежуточное программное обеспечение, если нет, вы перенаправите пользователя на маршрут «/ login».