我还需要检查静态内容的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('/'..
处理所有非静态请求。
我需要的是拥有一个只能处理静态请求的中间件。
答案 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)