Экспресс-сессия становится неопределенной при выходе из системы в микросервисной архитектуре - PullRequest
0 голосов
/ 05 июня 2019

Я создал пример приложения с микросервисной архитектурой в docker-compose, MySql - это база данных. Я могу настроить и запустить приложение с ожидаемой маршрутизацией через шлюз Express.

Я пытаюсь реализовать управление сеансами с помощью экспресс-сессии. Я устанавливаю флаг сеанса isLoggedIn устанавливается в true, когда происходит успешное вход в систему, но когда я пытаюсь получить доступ к сеансу при выходе из системы, сеанс говорит, что session.isLoggedIn не определен. Не уверен, как сохранить сеанс в этой архитектуре. Вот что я сделал до сих пор.

В app.js

var app = express();
var sessionMiddleware = session({
  secret: 'keyboard cat',
  resave: true,
  saveUninitialized: true
});

app.use(sessionMiddleware);
app.use(function (req, res, next) {
  req.session.test = "test";
  next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.json({ message: 'It works!!!' });
});

app.use('/api/users', sessionMiddleware, userRouter);

module.exports = app;

In user.router

const express = require('express');
const catchErrors = require('express-catch-errors');

const router = express.Router();

const {login, logout } = require('./user.controller');

router
  .route('/login')
  .post(catchErrors(login))

router
  .route('/logout')
  .get(catchErrors(logout));

module.exports = router;

В user.controller внутри логина

req.session.isLoggedIn = true;
          console.log("in login", req.session);
          console.log("session after", req.sessionID);

внутри выхода

 console.log("in destroy", req.sessionID);
  console.log("session destroy", req.session);
  req.session.destroy((err) => {
      if (err) {
        return console.log(err);
      }
      res.send({
        code: 200,
        success: 'User logged out successfully'
      });
    });

Каждый раз, когда я вхожу в экспресс, создается новый объект сеанса и массив сессий создается внутри req с другим идентификатором сеанса. Как обрабатывать сессию в таких ситуациях. Также, как обрабатывать сессии для нескольких пользователей. ? Любая идея высоко ценится.

...