当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 在Express app config中禁用会话

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用Express和Passport一起使用Node.js API应用程序,我可以通过将{session:false}传递给passport.authenticate来禁用会话,但是我可以在一个地方执行此操作,因此我不会重复自己600次? var app
我正在使用Express和Passport一起使用Node.js API应用程序,我可以通过将{session:false}传递给passport.authenticate来禁用会话,但是我可以在一个地方执行此操作,因此我不会重复自己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);

这将过滤所有请求(而不是.all,您也可以使用.get),其URL以/ users开头,通过身份验证中间件运行.

网友评论