app.all('*',function(req,res,next){
if(req.isAuthenticated()){
next();
}else{
next(new Error(401)); // 401 Not Authorized
}
});
// NOTE: depending on your version of express,
// you may need to use app.error here, rather
// than app.use.
app.use(function(err,req,res,next){
// Just basic, should be filled out to next()
// or respond on all possible code paths
if(err instanceof Error){
if(err.message === '401'){
res.render('error401');
}
}
});
Если вы определяете маршрут all
до маршрутов, которые требуют аутентификации, и после маршрутов, которые не (таких как домашняя страница, логин и т. Д.), То это должно влиять только на те маршруты, которые в нем нуждаются. В качестве альтернативы вы можете использовать RegExp вместо '*'
, который будет включать подпуть или список путей, требующих аутентификации.
Другой вариант - создать функцию для включения в каждый маршрут, требующий аутентификации:
function IsAuthenticated(req,res,next){
if(req.isAuthenticated()){
next();
}else{
next(new Error(401));
}
}
app.get('/login',function(req,res,next){
res.render('login');
});
app.get('/dashboard',IsAuthenticated,function(req,res,next){
res.render('dashboard');
});
app.get('/settings',IsAuthenticated,function(req,res,next){
res.render('settings');
});