Gon*_*nys 3 middleware routes node.js express
我们怎样才能app.use()在我们调用它时添加中间件并使用该中间件.目前我有这个代码:
function ensureUser(req,res,next){
if(req.isAuthenticated()) next();
else res.send(false);
}
app.get('/anything', ensureUser, function(req,res){
// some code
})
Run Code Online (Sandbox Code Playgroud)
我正在尝试将ensureUser添加到我有路由的所有文件中.我带来了一个解决方案,将该文件添加到一个文件中,并在我有路由的每个文件中要求该文件.有没有办法将该函数添加到app.use或app.all类似的东西,因为我不必在每个文件中包含该函数.
是的,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){})
//...
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您不必将其包含在每个文件中.但是,通过这种方式,您还需要对每个文件进行身份验证,因此您可能希望添加一些例外(至少是身份验证页面).为此,您可以使用通配符在URL中包含该方法:
app.use('/admin/*', function(req, res, next){
if(req.isAuthenticated()) next();
else res.send(false);
});
Run Code Online (Sandbox Code Playgroud)
或者在函数内添加白名单:
app.use(function(req, res, next){
// Whitelist
if(['/', '/public'].indexOf(req.url) !== -1
|| req.isAuthenticated())
next();
else
res.send(false);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |