Выход из коа-паспорта () не очищает сеанс

Я использую koa, koa-passport и koa-session для регистрации пользователей, в которых все работает нормально, но когда я вызываю ctx.logout(), пользователь может обновить и все равно войти в систему. Кажется, что ctx.session и / или cookie-файлы неправильно очищается.

Это по-прежнему не удается при использовании Почтальона для отправки запросов.

import Koa = require('koa');
import session = require('koa-session');
import passport = require('koa-passport');

....

app.keys = ['******'];
app.use(session({}, app));

....

app.use(passport.initialize());
app.use(passport.session());

....

router.get('/logout', (ctx: Context) => {
    if (ctx.isAuthenticated()) {
   ctx.logout();
   ctx.session = null; // Added this but still nothing
  }

  ctx.response.body = true;
});

Я нашел множество примеров с Express, включая следующие, но без удачи с Koa: https://github.com/expressjs/cookie-session/issues/104

2 ответа

Я взял этот ответ из https://github.com/expressjs/cookie-session/issues/104, чтобы вы могли найти полную историю диалога, но я просто сэкономлю время и напишу ответ ниже:

await ctx.logout();
ctx.session = null;

Я думаю, он просто не знал, что ctx.logout - это асинхронная функция

      res.logout()

Наборы passportна {} в файле cookie сеанса, но оставляет файл cookie на месте. Например:

      {
  cookie: {
    originalMaxAge: 604800000,
    expires: '2022-01-17T19:14:31.872Z',
    secure: false,
    httpOnly: true,
    path: '/'
  },
  passport: {}
}

Это было бы полезно для хранения чего-либо еще с помощью файла cookie.

Чтобы удалить файл cookie, используйте res.clearCookie()как это:

      function deauthenticateSession(req: Request, res: Response, next: NextFunction) {
  // http://www.passportjs.org/docs/logout/ removes passport from the cookie, not the cookie from the browser
  // https://github.com/expressjs/cookie-session/issues/104#issuecomment-416249687
  res.clearCookie('connect.sid', { path: '/', httpOnly: true })
  res.status(200).json({})
}
Другие вопросы по тегам