node.js - 在 Express 应用程序配置中禁用 session

标签 node.js express passport.js

我将 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/

相关文章:

javascript - NodeJS 中客户端与服务器通信的简单方法

javascript - 如何区分express.js中路由的路径和参数?

node.js - 未处理的拒绝 TypeError : dbUser. validPassword 不是函数 Sequelize Node React Passport

node.js - 获取传入请求的 HTTP 版本

node.js - Google OAuth2.0 是否需要 "profile"范围?

javascript - Passport 本地策略未调用

node.js - npm 错误!超出最大调用堆栈大小 - 尝试安装 webpack

javascript - 添加新项目时 vsCode 刷新树

javascript - 如何在 OS X 中将 NODE_ENV 设置为生产/开发

node.js - 终端进度条未显示在 Docker 控制台中。