【发布时间】:2015-04-24 10:11:20
【问题描述】:
我正在尝试使用 Express Middleware 来验证用户是否有权处理我的某些请求。但是,有些请求不需要任何验证。在路由器中,我有这样的东西:
// Routes that end in /transactions
module.exports = function(router, isAuthenticated, acl) {
router.post('/transactions', isAuthenticated, acl.isAdminOrFrom, TransactionHandler.transactions.post);
// Get most recent transactios by general, category, or userId
router.get('/transactions/:timeStamp', isAuthenticated, TransactionHandler.transactions.findMostRecent);
router.get('/transactions/categories/:category/:timeStamp', isAuthenticated, TransactionHandler.transactions.category.findMostRecent);
router.get('/transactions/users/:user_id/:filter/public/:timeStamp', isAuthenticated, TransactionHandler.transactions.userId.findMostRecent);
// Get the total reps traded on Repcoin so far
router.get('/transactions/totaltraded', TransactionHandler.transactions.total.get);
请注意,我列出的最后一条路线没有 isAuthenticated 那里。但是,将该中间件放在上述路由中也使其在最后一个中起作用。我也尝试过这样的事情:
router.use('/transactions/:timeStamp', TransactionHandler.transactions.findMostRecent);
router.get('/transactions/:timeStamp', TransactionHandler.transactions.findMostRecent);
但是中间件似乎仍然在调用 router.get() 的任何东西上执行。如何在每个路由的基础上使用我的中间件?
【问题讨论】: