2015-10-09 59 views
5

Przyjrzałem się this answer i this answer, ale bez kości. Mój problem polega na tym, że gdy moja aplikacja jest dostępna przez https://appname.herokuapp.com, wszystko działa poprawnie. ale po uzyskaniu dostępu poprzez https://www.appname.com (który CloudFlare aliasy na https://appname.herokuapp.com), rozkłada się.bezpieczne pliki cookie node.js + Heroku + CloudFlare

W szczególności, gdy użytkownik się loguje, uwierzytelnianie jest przetwarzane poprawnie, ale plik cookie sesji użytkownika nie jest ustawiony prawidłowo. Kiedy więc zalogowany użytkownik zostanie przekierowany na następny ekran, żądanie zostanie odrzucone jako nieautoryzowane.

Teraz robię to w ekspresowym:

var mySession = session({ 
    key: "sid", 
    secret: process.env.SESSIONS_SECRET, 
    proxy: true, 
    cookie: { 
     maxAge: 86400000, 
     secure: true, 
    }, 
    store: rDBStore, 
    resave: false, 
    saveUninitialized: true, 
    unset: 'destroy' 
}); 

app.enable('trust proxy'); 
app.use(mySession); 

Am I czegoś brakuje w moim kodu węzła lub w moich ustawień CloudFlare?

+0

mam ten sam problem. Rozwiązałeś to? – Marc

+0

@Marc, nie, nigdy niestety nie. – BarthesSimpson

Odpowiedz

0

Czy to może być związane z tym CloudFlare umieszcza aplikację węzła instanece za proxy?

Cytat z dokumentacji expressjs/sesji:

Jeśli masz swoje node.js za serwerem proxy i są przy użyciu bezpiecznego: true, trzeba ustawić proxy "Trust" w Express.

app.set('trust proxy', 1)

https://github.com/expressjs/session#cookiesecure