首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs启用/禁用基于url的会话?

如何使用nodejs启用/禁用基于url的会话?
EN

Stack Overflow用户
提问于 2015-10-01 15:34:07
回答 1查看 402关注 0票数 1

我使用express和express-session中间件来构建一个启用了session的网站。但一些网址,如/health-check' and/version-checkdo not need session, especially the/health-check`,,会在db(项目使用mongodb).I中产生大量无用的会话,他们相信有一个很好的解决方案。

以下是会话的一个片段:

代码语言:javascript
复制
var session = require('express-session'),
    passport = require('passport');

var app = express();
//other middleware.

// Express MongoDB session storage
app.use(session({
    saveUninitialized: true,
    resave: true,
    secret: config.sessionSecret,
    cookie: { maxAge: 2628000000 },
    store: new mongoStore({
        db: db.connection.db,
        collection: config.sessionCollection
    })
}));

// use passport session
app.use(passport.initialize());
app.use(passport.session());
//...
EN

回答 1

Stack Overflow用户

发布于 2015-10-03 20:00:57

我建议创建自己的中间件函数,并将您的会话中间件作为函数放在那里,但要有条件,例如:

代码语言:javascript
复制
app.use(function(req, res, next){
  if(...some condition...){//for example check url
    //do something or nothing
    next();//very important or request will freeze
  } else {//otherwise run session
    session({your options})(req, res, next);
  }
});

相反,您的会话(app.use())

在一个自定义中间件中,您可以放入任何其他中间件来添加条件。但是,当您想要将多个中间件包装到单个自定义中间件时,请注意“下一步”。它只能在中间件中使用一次(多个中间件使用它多次)。然后你必须创建你自己的回调'next‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32881885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档