nodejs сеанс выхода / уничтожения без перезагрузки страницы - PullRequest
0 голосов
/ 08 января 2020

Я использую express, express -сессию и паспорт в моем приложении node.js и возникают проблемы при выполнении автоматического выхода из системы.

инициализация:

expressapp.use(session({
  secret: '****',
  cookie: { maxAge: 1000 * 60 * 60 }, // 1h
  saveUninitialized: false,
  resave: true
}));
expressapp.use(passport.initialize());
expressapp.use(passport.session());

my код выхода из системы:

  expressapp.get('/profile/', isLoggedIn, function (req, res) {
    logger.info('get profile view!');
    res.render('profile');
  });

  expressapp.get('/logout', function(req, res) {
    logger.info('logging out..');
    req.session.destroy(function (err) {
        res.redirect('/');
    });
  });

  expressapp.post('/login', passport.authenticate('login', {
    successRedirect: '/#!/profile',
    failureRedirect: '/#!/login',
  }));

  function isLoggedIn(req, res, next) {
    if(req.isAuthenticated()) {
      logger.info('authenticated!');
      return next();
    } else {
      logger.info('unauthorized!');
      res.render('login');
    }
  }

У меня возникает проблема, если я нажимаю кнопку выхода из системы, вызывается функция, и меня перенаправляют, но при возврате в профиль функции, перечисленные выше, больше не вызывают (журналы не распечатаны), поскольку они все еще где-то сохраняются. Только после перезагрузки сайта я перенаправляюсь на страницу входа. Это не работает для меня при автоматическом выходе из системы, поскольку я не перезагружаю страницу.

Я также пытался вызвать req.logout () в маршруте выхода из системы, но с тем же результатом.

Как заставить эти функции вызываться при каждом нажатии, а не при каждой перезагрузке сайта? Где хранится эта информация?

...