2016-06-21 15 views
9

Oturum çerezini ana alan ile tüm alt etki alanları arasında paylaşmalıyım. Ben expressjs çerçeveye dayalı iki nodejs hizmetleri vardır:Uygulamanın kullanılabilir alt alan adı çerezi nasıl yapılandırılır?

// example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

// blog.example.local 

    ... 
    app.use(session({ 
     // what should I write here? <--------- 
    })); 

Yani example.local ait çerez mevcut erişmek için blog.example.local oturumu yapılandırmasında neyi yazmalısınız benim soru?

DÜZENLEME:

// blog.example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

yeterince mi yoksa optimize edilebilir: @yeiniel önermek olarak, sadece aşağıdaki gibi blog.example.local için aynı yapılandırma kullanmalıyım?

cevap

6

Temel olarak iki şeye ihtiyacınız var: Tüm sunucularda aynı ayarları kullanın (yalnızca çerez ayarları değil, tüm oturum ayarları deposu içeriyordu) ve siteler arasındaki ortak etki alanına çerez etki alanı yapılandırmasını işaretleyin.

+0

Bu yüzden, sadece "example.local" ile "blog.example.local" arasındaki ayarları kopyalayıp yapıştırmam gerekiyor mu? – Erik

+0

evet, sadece bu. – yeiniel

1

Şu anda benzer bir kurulum yönetiyorum tüm uygulamalar Uygulamaların farklı sunucular üzerinde özel olarak bile, oturum verilerini tutmak için localhost kullanmak mümkün olmayacaktır oturumda

app.use(session({ 
store: redisStore, 
secret: config.secret, 
resave: true, 
rolling: true, 
saveUninitialized: false, 
name: config.cookie_name, 
cookie: { 
    domain: config.cookie_domain_name, \\ .website.tld 
    secure: false 
} 

için aynı ayarlara sahiptir. Tüm uygulamaların erişebileceği oturum verileri için merkezi bir depolama alanına ihtiyacınız olacak.

+0

Evet, oturum için depolamayı ayırmam gerektiğini biliyorum, ancak şimdi tüm alt etki alanlarım tek bir makinede bulunuyor. Yani temel soru oturum yapılandırmaları hakkındaydı ama işaret ettiğin için teşekkürler! @Lalit Goswami yanıtı hakkında ne düşünüyorsunuz? – Erik

+0

Tüm alt alan adlarınızın aynı makinede olması gerekmez. Sadece seanslar merkezi olarak depolanıyor. Uygulamalar herhangi bir sayıda makinede olabilir. Ayrıca, Set-Cookie'yi nasıl gönderirsiniz, alt alanların ayrı ayrı mı yoksa ana alan adı altında mı ele alınacağına karar verir. – mayankbatra

2

bence senin çerez katman öznitelik example.local

için blog.example.local ve

cookie: { 
     domain: "example.local", 
     path:'/' 
} 

için

cookie: { 
     domain: ".example.local", 
     path:'/' 
} 

, böyle olmalı

Umarım bu işe yarar.

+0

Emin misin? Tüm ortak alan adı ve alt alan adları için çerez paylaşmam gerekirse, "alan adı:" bexample.local "ifadesini kullanmam gerektiğini okudum. – Erik