2016-05-31 3 views
1

여러 포트의 단일 서버에서 express-session을 사용하여 여러 개의 평균 응용 프로그램을 실행 중입니다. 응용 A로 인증하면 다른 응용 B에 대해 설정된 토큰이 수정됩니다. 그런 다음 응용 프로그램 B의 인증 된 사용자 세션이 거부됩니다.단일 서버, 다른 포트에서 익스프레스 세션 응용 프로그램이있는 다중 익스프레시

토큰을 독립적으로 유지하고 확인하도록 모든 응용 프로그램을 구성하려면 어떻게해야합니까? 예를 들어 localhost에서는 응용 프로그램 A가 포트 80에서 실행되고 응용 프로그램 B는 포트 90에서 실행됩니다. 사용자가 다른 사용자의 응용 프로그램 B 세션을 중단하지 않고 응용 프로그램 A를 인증하고 사용할 수있게하려고합니다. (에서 세션 ID를 저장하는 데 사용됩니다)

// Connect to database 
mongoose.connect(config.mongo.uri, config.mongo.options); 

var connection = mongoose.createConnection(config.mongo.uri, config.mongo.options); 

var app = express(); 

// enable CORS 
app.use(cors()); 

// enable cookieParser 
app.use(cookieParser()); 

// enable session 
app.use(session({ 
    secret: config.secrets.session, 
    resave: false, 
    saveUninitialized: true, 
    name: 'uniqueSessionId', 
    store: new MongoStore(
     { 
      mongooseConnection: connection 
     } 
    ) 
})); 

답변

1

쿠키 주어진 호스트 이름에 모든 포트에서 공유됩니다 : 여기

내 문제와 관련된해야 내 app.js 파일의 코드입니다 이는 앱이 서로 간섭하는 이유입니다. 다른 제도와 포트가 다른 호스트 이름을하지 않는다 (이 즉, localhost 또는 127.0.0.1 단지 이름과 동일한 호스트에서 실행되는 여러 응용 프로그램이있는 경우

가 :

express-session의 문서는 다음과 같은 제안), 세션 쿠키를 서로 분리해야합니다. 가장 간단한 방법은 앱마다 다른 name을 간단히 설정하는 것입니다.

+0

설명서에 따라 고유 한 이름을 포함하여 세션 개체를 수정하려고했지만 작동하지 않았습니다. 두 응용 프로그램은 여전히 ​​서로를 방해합니다. – Bibble

+0

이전 쿠키도 삭제 했습니까? – robertklep

+0

예, 응용 프로그램 쿠키의 새 이름과 "토큰"이라는 쿠키가 나타납니다. 각 응용 프로그램마다 토큰 쿠키가 있어야하는지 궁금합니다. 토큰 쿠키는 각 응용 프로그램에서 계속 변경되는 것으로 보입니다. – Bibble

관련 문제