我正在使用Express和Passport一起使用Node.js API应用程序,我可以通过将{session:false}传递给passport.authenticate来禁用会话,但是我可以在一个地方执行此操作,因此我不会重复自己600次? var app
var app = express(); app.configure(function() { app.use(express.bodyParser()); app.use(passport.initialize()); }); app.get('/users', passport.authenticate('hash', {session:false}), controllers.users.getAll); app.get('/users/me', passport.authenticate('hash', {session:false}), controllers.users.getCurrentUser); // and so on...
如果我能这样做会很棒:
app.donotuse(sessions).thanks();只需将结果保存在变量中并重复使用:
var PassportAuthenticateMiddleware = passport.authenticate('hash', {session:false}); ... app.get('/users', PassportAuthenticateMiddleware, controllers.users.getAll); app.get('/users/me', PassportAuthenticateMiddleware, controllers.users.getCurrentUser);
(或者像@hexacyanide建议全球使用中间件,如果这是您设置中的一个选项)
或者,您可以使用类似于此的内容:
app.all('/users*', passport.authenticate('hash', {session:false})); app.get('/users', controllers.users.getAll); app.get('/users/me', controllers.users.getCurrentUser);
这将过滤所有请求(而不是.all,您也可以使用.get),其URL以/ users开头,通过身份验证中间件运行.