我将 Express 与 Passport 一起用于 Node.js API 应用程序,我可以通过将 {session:false}
传递给 passport.authenticate
来禁用 session ,但是有没有一种方法可以在一个地方执行此操作,这样我就不会重复 600 次?
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);
这将过滤所有 URL 以 /users
开头的请求(而不是 .all
,您也可以使用 .get
)以运行通过身份验证中间件。
关于node.js - 在 Express 应用程序配置中禁用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757863/