2014-05-21 3 views
6

I wdrożone sesje za pomocą Passport, ale na sesjach przechowywania Próbowałem connect-mongo użyciu mongoose połączenia.W jaki sposób są zapisywane sesje MongoStore programu connect-mongo?

To jest mój kod (sesje część):

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 
    }) 
    })); 

Coś wątpię czy byłoby odwrotne jest app.use(connect.session({ secret: 'ilovescotchscotchyscotchscotch' })) is using connect moduł ale konfiguracja jest ustawiona na MongoStore zmiennej express-session. Jednak usunięcie pierwszej aplikacji powodującej nie działa dobrze (nie będzie uwierzytelniania/przekierowania).

Tak, o moim tytule pytania. Gdzie jest przechowywana ta sesja? Naprawdę myślałem, że mogę przejść do mojej bazy danych Mongo i znaleźć każdą kolekcję .

Jak mogę znaleźć takie sesje w backend (Mongo), a nawet w aplikacjach jako obiekty Java Script?

+0

Czy nie masz 'kolekcję sessions' w db? –

+0

Nie mam tego, czy nie byłby on domyślnie tworzony? – diegoaguilar

Odpowiedz

8

connect-mongo przechowuje sesje w "sessions" collection by default. Powinny tam być i widoczne w powłoce mongo lub jakimkolwiek narzędziu GUI, jak robomongo. Tak, jest tworzony domyślnie. Przechodzę w the mongooose_connection option zamiast db.

Z dokumentów:

mongoose_connection w formie: someMongooseDb.connections [0], aby istniejące połączenie MONGOOSE. (Opcjonalnie)

+0

Czy możesz pokazać przykład swoich sugestii, aby ulepszyć mój kod? – diegoaguilar

+2

'sklep: nowy MongoStore ({mongoose_connection: mongoose.connections [0]})' –

+0

Jeszcze jedno pytanie związane z tematem, jak to możliwe, że robię 'app.use (connect.session ({secret: 'ilovescotchscotchyscotchscotch' })); 'a następnie w konfiguracji MongoStore mają' secret: 'ziKologiia', .. '. Jeśli najpierw usunę, to nie będzie dobrze, jak mogą być te dwa sekrety, * kompatybilne *? – diegoaguilar

3

Jedną rzeczą, jaką należy zrobić, to wymienić

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

ze swoimi

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

Jeśli zastąpię 'app.use (connect.session ({secret: 'ilovescotchscotchyscotchscotch'}));' będzie działać źle. Nie zarządza przekierowaniami sesji. – diegoaguilar