Express中的静态内容中间件

时间:2018-01-14 09:24:40

标签: node.js express

我还需要检查静态内容的JsonWebToken(JWT)。

在express.js中,我尝试过这样的事情:

app.use(authUtil.checkAuth, express.static(config.root + '/public'));

问题是,checkAuth已成为所有请求的中间件,而我希望以下代码处理非静态请求:

app.use('/', function(req, res, next){

});

当我使用它时:

app.use(express.static(path.join(root, 'public')));

然后app.use('/'..

处理所有非静态请求。

我需要的是拥有一个只能处理静态请求的中间件。

1 个答案:

答案 0 :(得分:0)

authUtil.checkAuth中间件中,您需要检查请求是否是静态的。如果是,请运行身份验证检查,否则请拨打next()

// Auth middleware

const checkAuth = function (req, res, next) {
  if (req.method !== 'GET' && req.method !== 'HEAD') {
    return next();
  }

  // Parse the url and check if it's a static request
  // Not sure what to check for exactly - perhaps if it's not `/api` or something
}

// Middleware has to be set in correct order
app.use(checkAuth)
app.use(express.static(config.root + '/public'));

或保留checkAuth原样,仅在特定路线上使用。例如,如果我的api路由已安装在/api上,我可以将checkAuth添加到/api以外的所有内容中:

app.all(/(?!\/api)/, checkAuth)