首页 > 解决方案 > 是否可以将 app.use 放在 app.get 中

问题描述

app.get('/game/', function(req, res) {
if (req.session.user) {
    app.use(express.static(__dirname + '/game'));
    res.sendFile(__dirname + '/game/index.html');        
}
else {
    res.send('not logged in ');
}  

})

像在这段代码中那样将 app.use 放入 app.get 中是否合法?它按预期工作,但我想知道它是否合法。

标签: express

解决方案


我建议使用两个不同的中间件功能来分离两个不同的问题 - 身份验证和静态资源服务:

app.get('/game/', ensureAuthenticated, express.static(__dirname + '/game'), sendGameIndex);

function ensureAuthenticated(req, res, next) {
  if (req.session.user) {
    next();        
  } else {
    res.send('not logged in ');
  }
}

function sendGameIndex(req, res) {
  res.sendFile(__dirname + '/game/index.html');
}

推荐阅读