事情是道路可能会谨慎;我想支持以下路径:
/chat/auth/test
/chat/auth/add
/chrome/auth/test
/chrome/add
每次 auth 都在路径中我希望调用auth中间件,而聊天和 chrome 我希望他们各自要调用的中间件。
app.js:
// Middleware authentication
var chatAuthenticate = require('./server/middleware/chat-authenticate');
app.use('/chat', chatAuthenticate(addon));
var authAuthentication = require('./server/middleware/auth-authenticate');
app.use('/auth', authAuthentication());
我知道我可以为app.js添加多个条目以用于每个可能的组合,例如/ chat / auth和/ chrome / auth,它不会增加复杂性,但我只是好奇它是否是可以通过通配符或正则表达式来解决这个问题:)
答案 0 :(得分:0)
app.use(/auth/, authAuthentication);
这会在任何地方为包含auth
的每个请求调用authAuthentication。需要考虑的一些事项:
/chat/
匹配的中间件作为RegEx,并且您调用/auth/chat
或/chat/auth
,则会调用这两个中间件。请务必考虑app.use()
来电的顺序。(request, response, next)
个参数。如果您在示例中直接调用该函数,则该函数应返回一个将采用三个快速中间件参数的函数。require
来电置于脚本顶部答案 1 :(得分:0)
您可以使用通配符(至少在快递4中):
app.use('/chat/*', chatMiddleware);
首先将中间件应用于以“/ chat /”开头的任何请求。然后使用下一个级别,只适用于'/ chat / auth /*'...。
app.use('/chat/auth/*', function(req, res, next) {
//.... middleware logic here
//.... assuming we don't reject the call, call next() when done
next();
));