我们如何将中间件添加到:
并仅在我们调用它时使用该中间件。目前我有这个代码:
app.use()
我正在尝试将ensureUser添加到我有路由的所有文件中。我带来了一个解决方案,将该文件添加到一个文件,并在我有路由的每个文件中要求该文件。有没有办法将该函数添加到function ensureUser(req,res,next){
if(req.isAuthenticated()) next();
else res.send(false);
}
app.get('/anything', ensureUser, function(req,res){
// some code
})
或app.use
或类似的东西,就像我不必在每个文件中包含该函数一样。
答案 0 :(得分:5)
是的,在任何路线之前添加app.use()
而没有第一个参数,并且应该始终调用一个
app.use(function(req, res, next){
if(req.isAuthenticated()) next();
else res.send(false);
});
// routing code
app.get('/', function(req, res){});
app.get('/anything', function(req,res){})
//...
通过这种方式,您不必将其包含在每个文件中。但是,通过这种方式,您还需要对每个文件进行身份验证,因此您可能希望添加一些例外(至少是身份验证页面)。为此,您可以在网址with a wildcard中包含该方法:
app.use('/admin/*', function(req, res, next){
if(req.isAuthenticated()) next();
else res.send(false);
});
或者在功能中添加白名单:
app.use(function(req, res, next){
// Whitelist
if(['/', '/public'].indexOf(req.url) !== -1
|| req.isAuthenticated())
next();
else
res.send(false);
}