2015-10-01 3 views
1

Я использую курьерское и экспресс-промежуточное программное обеспечение для создания веб-сайта с включенным сеансом. Но какой-то URL-адрес, например /health-check' and/version-check do not need session, especially the/health-check`, который сгенерирует много бесполезной сессии в db (проект использует mongodb). Я считаю, что есть хорошее решение для решения проблемы.Как включить/отключить сеанс на основе url с помощью nodejs?

Ниже приводится фрагменты сессии:

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()); 
//... 

ответ

0

Я предлагаю создать собственную функцию промежуточного слоя и поставить там свой сеанс промежуточное программное обеспечение, как функции, но с условиями, например:

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 (session())

В одном специальном промежуточном программном обеспечении вы можете добавить любое другое промежуточное программное обеспечение для добавления условий. Но когда вы хотите обернуть более одного промежуточного программного обеспечения в одно специализированное промежуточное программное обеспечение, будьте осторожны в «следующем». Его можно использовать только один раз в промежуточном программном обеспечении (использование нескольких посредников использует его несколько раз). Затем вам нужно создать свой собственный ответ «Следующий».

Смежные вопросы