2016-06-21 2 views
9

메인 도메인과 모든 하위 도메인간에 세션 쿠키를 공유해야합니다. 나는 expressjs 프레임 워크를 기반으로 두 nodejs 서비스가 있습니다응용 프로그램을 하위 도메인 쿠키로 구성하는 방법은 무엇입니까?

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

그래서 example.local의 쿠키를 기존에 액세스하려면 blog.example.local의 세션 구성에 무엇을 작성해야한다 내 질문?

편집 :

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

충분히 그것을 아니면 내가 그것을 최적화 할 수 있습니다 @yeiniel 제안으로, 난 그냥 다음과 같이 blog.example.local에 대해 동일한 설정을 사용해야합니까?

답변

6

기본적으로 두 가지가 필요합니다. 쿠키 설정뿐만 아니라 모든 세션 설정에 저장소가 포함 된 모든 서버에서 동일한 설정을 사용하고 쿠키 도메인 구성이 사이트 간의 공통 도메인을 가리키는 지 확인하십시오.

+0

그래서 'example.local'의 설정을'blog.example.local'에 복사하여 붙여 넣기 만하면됩니까? – Erik

+0

예, 바로 그 것입니다. – yeiniel

1

나는 현재 비슷한 설정 을 관리하고 모든 앱은 앱이 다른 서버에있는 특별히 경우, 세션 데이터를 유지하기 위해 로컬 호스트를 사용할 수 없습니다 세션

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 
} 

에 대해 동일한 설정이 있습니다. 모든 애플리케이션이 액세스 할 수있는 세션 데이터를 중앙 저장소에 저장해야합니다.

+0

예 세션을 위해 스토리지를 분리해야하지만 이제는 모든 하위 도메인이 단일 시스템에 있다는 것을 알고 있습니다. 그래서 기본적인 질문은 세션 설정에 관한 것이 었습니다. @Lalit Goswami의 대답은 무엇입니까? – Erik

+0

모든 하위 도메인이 동일한 컴퓨터에있을 필요는 없습니다. 세션 만 중앙 집중식으로 저장됩니다. 앱은 여러 대의 컴퓨터에있을 수 있습니다. 또한 Set-Cookie를 보내는 방법에 따라 하위 도메인을 별도로 처리할지 또는 기본 도메인으로 처리할지 결정합니다. – mayankbatra

2

내가 생각하는 당신의 쿠키 미들웨어의 속성은 example.local는

에 대한 blog.example.local

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

에 대한

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

, 다음과 같이해야한다

희망이 당신을 작동합니다.

+0

정말입니까? 나는 모든 공통 도메인과 하위 도메인에 대해 쿠키를 공유해야한다면'domain : "을 사용해야한다고 읽었습니다. bexample.local"' – Erik

관련 문제