2016-05-31 2 views
1

Я запускаю несколько приложений MEAN, используя экспресс-сеанс на одном сервере под несколькими портами. Когда я аутентифицируюсь в приложении A, изменен установленный токен для другого (приложение B). Аутентифицированный сеанс пользователя для приложения В затем отклоняется.Несколько экспресс с приложениями экспресс-сессии на одном сервере, разные порты

Как настроить все мои приложения для сохранения и проверки токенов самостоятельно? Например, на локальном хосте приложение A запускается на порт 80, а приложение B запускается на порт 90. Я хочу, чтобы пользователь мог аутентифицировать и использовать приложение A, не нарушая сеанс приложения другого пользователя.

Вот код в моем app.js файл, который должен иметь отношение к моему вопросу:

// 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

Cookies (которые используются для хранения идентификатора сеанса в) являются общими для всех портов на заданном имени хоста , поэтому ваши приложения мешают друг другу.

Документация express-session предлагает следующее:

, если у вас есть несколько приложений, работающих на то же имя хоста (это просто название, т.е. localhost или 127.0.0.1, различные схемы и порты не называют другой хост), тогда вам нужно отделить файлы cookie сеанса друг от друга. Самый простой способ - просто установить разные name с за приложение.

+0

В документации я попытался изменить свой объект сеанса, указав уникальное имя, но это не сработало. Эти два приложения все еще мешают друг другу. – Bibble

+0

Вы тоже удалили старые куки? – robertklep

+0

Да, я вижу новые имена файлов cookie приложений и cookie с именем «токен». Мне интересно, должен ли быть токен-файл cookie для каждого приложения, а не один? Мне кажется, что маркерный файл cookie - это тот, который продолжает модифицироваться каждым приложением. – Bibble

Смежные вопросы