1.function authCheck (req, res, next)
: это промежуточное ПО
здесь
- req для объекта запроса,
- res для ответаobject,
- next является функцией промежуточного программного обеспечения в цикле запроса-ответа приложения, передает управление следующему блоку
Подробнее о Middleware
express обеспечивает синтаксис для передачи промежуточного программного обеспечения, как показано ниже:
route.get('/your_route',yourMiddlewareFuntion,function(req,res){
});
, поэтому ваша функция промежуточного программного обеспечения имеет доступ к request
и response
объекту.
2.Да, вы можете создать свое промежуточное программное обеспечение в отдельном файле и использовать его в своем маршруте.
пример: ваш helper.js
похож на:
module.exports = function(req,res,next){
// middleware logic goes here
// like check users is logged in or not
if(req.user){
// user is logged in so able to access private route like dashboard
next();
}else{
// redirect user to login page
return res.redirect('/login');
}
}
, поэтому теперь вы определяете маршрут как
var checkAuth=require('./helper');
route.get('/dashboard',checkAuth,function(req,res){
// user is logged in , find some data and display it
return res.render('/dashboard');
});
когда вы нажимаете эту маршрутную панель в вашем браузере, запрос сначала проходит через промежуточное ПО checkAuth, он проверяет, вошли вы в систему или нет, если вы не вошли в систему, вы будете перенаправлены на страницу входа.иначе ваш запрос перейдет к следующему блоку, который является функцией в вашем маршруте / dashboard, который будет извлекать пользовательские данные и отображать их на dashboard.
3.В приведенном выше примере мы использовали функцию промежуточного программного обеспечения, потребовав ее и присвоив ей переменную checkAuth
, поэтому мы использовали checkAuth
, а не checkAuth()
, или вы можете напрямую использовать function(req,res,next){}
в своем маршруте какпромежуточный слой