Выход из экспресс-сессии в Stormpath не удаляет сеанс

Я использую stormpath-express вместе с express-session в моем экспресс-приложении. Входная часть работает нормально. Однако, когда я выхожу, свойство предыдущего сеанса все еще остается в сеансе. Я вижу, что свойство сеанса connect.sid остается прежним

Я вызвал / выйти так <button class="btn btn-default btn-default navbar-btn" onclick="$.post('/logout', function(data) {location.href='/'})"> Это ajax POST вызов / выход.

Согласно документации Stormpath, сессия будет уничтожена. Тем не менее, когда я вхожу с другим пользователем, куки предыдущего сеанса все еще там.

var session = require('express-session');    
app.use(session({
      genid: function(req) {
        return uuid.v1();
      },
      secret: 'xxxxx',
      resave: false,
      saveUninitialized: false
    }));

После выхода из системы свойство предыдущего сеанса все еще существует

var sess = req.session;
        if(sess.phoneNumbers) {
            console.log('reuse phoneNumbers from session'); // why it still here???
        } else {

1 ответ

Решение

Express-Stormpath будет удалять только те cookie-файлы, которыми он управляет, он не будет удалять ваши собственные cookie-файлы, поскольку мы не хотим вмешиваться в любые пользовательские сценарии использования, для которых могут использоваться другие сеансовые cookie-файлы.

Если вы хотите удалить свои cookie-файлы так же, как и наши, вы можете использовать обработчик маршрута, который запускается раньше наших. Просто поместите этот код над вызовом stormpath.init():

   app.post('/logout', function (req, res, next) {
     // delete the cookies that you need to delete
     next();  // our logout handler will get called next
   });

Мы планируем добавить обработчик пост- выхода из системы, который позволит вам сделать то же самое.

Надеюсь, этот ответ поможет! PS Я работаю в Stormpath и поддерживаю эти библиотеки:)

Другие вопросы по тегам