什么是更好的方式来validationExpress 4路由器上的一些路由?

我正在使用Express 4,我有一个由passport.js保护的路由,如下所示:

var media = require('express').Router(); media.get('/', function(req, res) { // provide results from db }); media.post('/', passport.authenticate('bearer'), function(req, res) { // This route is auth protected }); 

所以 – 收集路线应该(大部分)不应该保护我,并创build/更新路线应该。 但是这需要我把护照传给我所有的路由文件(到目前为止我已经有7个了),然后把它作为一个中间件添加到其中的一些文件中。

我喜欢这个版本,你可以这样做:

 var router = require('./my-router'); app.use('/api/route', passport.authenticate('bearer')); app.use('/api/route', router); 

但是,这需要我的所有路线授权。

有没有更好的方法来通过护照一路?

您可以将您的路由器分为受保护/不受保护的路由,并在受保护的路由上调用中间件。

 var express = require('express'), media = express.Router(), mediaProtected = express.Router(); media.get('/', function(req, res) { // provide results from db }); mediaProtected.post('/', function(req, res) { // This route is auth protected }); module.exports = { protected: mediaProtected, unprotected: media }; 

然后你可以做

 var router = require('./my-router'); app.use('/api/route', passport.authenticate('bearer'), router.protected); app.use('/api/route', router.unprotected);