2014-04-26 14 views
5

Czy istnieje sposób na utrzymanie sesji użytkownika po ponownym uruchomieniu serwera, aby pomóc mi utrzymać rozwój?Utrzymaj sesję paszportową podczas restartu serwera.

Pracuję nad projektem węzła ExpressJS lokalnie na moim komputerze. Używam Grunt-nodemon do oglądania moich plików JS i restartowania serwera po wprowadzeniu zmian. Oznacza to jednak, że wszelkie sesje w moim projekcie (są zalogowane przez użytkownika) są wyczyszczone.

Obecnie, jeśli jestem gdzieś na głębokiej stronie i uruchamiam się ponownie, jestem wyrzucany na stronę logowania i muszę ponownie nawigować, co jest naprawdę frustrujące.

Używam paszportu jako oprogramowania pośredniczącego sesji. Używam mangusty jako mojej głównej bazy danych aplikacji, jeśli mogę tego użyć w jakiś sposób, to byłoby super.

+0

Użyj innego przechowywanie sesji jak REDiS zamiast magazynu pamięci, który jest domyślnym. Ale jeśli nie robisz czegoś nadzwyczajnego z sesjami, polecam używanie sesji opartych na plikach cookie. –

+0

Sesje są nadal oparte na plikach cookie, są po prostu niepoprawne po ponownym uruchomieniu serwera. Czy redis nie jest rozwiązaniem bazodanowym? – Alex

+0

Oto rozwiązanie mongodb: [Node.js + express.js + passport.js: pozostań uwierzytelniony między restartem serwera] (http://stackoverflow.com/q/10164312/) –

Odpowiedz

5

Jest to bardzo możliwe dzięki zwykłemu użyciu dowolnej metody przechowywania.

Jedną z opcji jest użycie Redis.

Oto przykład, który wykorzystuje moduł connect-redis:

app.use(express.cookieParser()); 
    var session = require('express-session'); 
    var RedisStore = require('connect-redis')(session); 
    app.use(express.session(
     { 
      store: new RedisStore(
       { 
        host: '127.0.0.1',  //where redis store is 
        port: 6379,    //default redis port 
        prefix: 'sess',   //prefix for sessions name is store 
        pass: 'passwordtoredis' //password to redis db 
       } 
      ), 
      secret: 'cookiesecret',  //cookie secret 
      key: 'express.sid' 
     } 

)); 

To może być bardziej zwięźle, ale to powinno działać dobrze.

Ustawienie redisu jest dość łatwe; strona redis ma świetny samouczek: http://redis.io/topics/quickstart

Należy pamiętać, że redis domyślnie przechowuje sesję w pamięci, co oznacza, że ​​po ponownym uruchomieniu sprzętu sesja zostanie utracona (ale istnieje możliwość jej wykonania) utrzymują http://redis.io/topics/persistence)

nadzieję, że to pomogło :)

+0

Dzięki za odpowiedź. Więc myślisz, że mógłbym użyć mojej obecnej konfiguracji mangusty do przechowywania sesji? – Alex

+0

Tak. I są narzędzia do tego celu (podobne do połączenia redis), które to robią i jako: http://stackoverflow.com/questions/14059051/best-session-storage-middleware-for-express-mongodb states, connect-mongo wygląda jak najlepszy pakiet do tego celu. tutaj jest link: https://github.com/kcbanner/connect-mongo. Oczywiście możesz użyć mangusty jawnie i napisać swój własny sklep :). – Jarema

+0

Brilliant. Dokonałem aktualizacji do wersji Express 4.x i użyłem connect-mongo. Działa doskonale i oszczędza mi tyle czasu. Jeszcze raz dziękuję, dbaj o to :) – Alex

Powiązane problemy