Я реализовал сеансы с использованием Passport , но для хранения сеансов я попробовал connect-mongo с использованием соединения mongoose .

Это мой код (часть сеансов):

var express     =       require('express')
var mongodb     =       require('mongodb')
var mongoose    =       require('mongoose')
var bodyParser  =       require('body-parser')
var cookie      =       require('cookie-parser')
var connect     =       require('connect')
var passport    =       require('passport')
//var flash         =       require('connect-flash')
var session     =       require('express-session');
var MongoStore  =       require('connect-mongo')(session);
var LocalStrategy =     require('passport-local').Strategy;

var app = express()

var BSON = mongodb.BSONPure

app.use(express.static(__dirname+"/public"))
app.use(bodyParser())
app.use(cookie())
app.use(connect.session({ secret: 'ilovescotchscotchyscotchscotch' })); 
app.use(passport.initialize());
app.use(passport.session());

mongoose.connect('mongodb://localhost/psicologosTuxtepecDB')



var Schema = mongoose.Schema
var userCredential = new Schema({

    username:   String,
    password:   String

},  {
    collection:     'members'
})

var userCredentials = mongoose.model('members', userCredential)



app.use(session({
    secret: 'ziKologiia',
    clear_interval: 900,
    cookie: { maxAge: 2 * 60 * 60 * 1000 },
    store: new MongoStore({
      db : mongoose.connection.db
    })
  }));

Я сомневаюсь, что это будет контрпродуктивным, так это использование модуля подключения app.use(connect.session({ secret: 'ilovescotchscotchyscotchscotch' })) is using, но конфигурация MongoStore настроена на переменную express-session. Однако удаление сначала приводит к тому, что приложение не работает должным образом (не выполняется аутентификация / перенаправление).

Итак, по поводу названия моего вопроса. Где хранится этот сеанс? Я действительно подумал, что могу зайти в свою базу данных Mongo и найти любую коллекцию , в которой она хранится.

Как мне найти такие сеансы на сервере (Mongo) и даже в приложении в виде объектов Java Script?

7
diegoaguilar 21 Май 2014 в 07:40

2 ответа

Лучший ответ

connect-mongo по умолчанию сохраняет сеансы в коллекции "sessions" < / а>. Они должны быть там и видны в оболочке mongo или любом графическом интерфейсе пользователя, например robomongo. Да, создается по умолчанию. Я бы передал параметр mongooose_connection вместо db.

Из документов:

mongoose_connection в форме: someMongooseDb.connections [0], чтобы использовать существующее соединение мангуста. (по желанию)

10
Peter Lyons 21 Май 2014 в 03:55

Единственное, что вам следует сделать, это заменить

app.use(connect.session({ secret: 'ilovescotchscotchyscotchscotch' }));

С вашим

app.use(session({
  secret: 'ziKologiia',
  clear_interval: 900,
  cookie: { maxAge: 2 * 60 * 60 * 1000 },
  store: new MongoStore({
    db: mongoose.connection.db
  });
}));
3
mscdex 23 Май 2014 в 05:31