Уничтожение сессии в коа-сессии - PullRequest
0 голосов
/ 15 апреля 2020

Итак, у меня есть простая система авторизации, где при входе в систему пользователь сохраняется в сеансе. Проблема в такой ситуации, когда я хочу удалить сеанс, таким образом, выйдя из системы, и сеанс переходит к следующему запросу.

app.get('/logout', ctx => {
    ctx.session = null;
    ctx.redirect('/');
});

Так что в этом случае код ниже будет отображать информацию пользователя на странице. после перенаправления с выхода из системы:

app.get('/', ctx => ctx.body = ctx.session);

Файлы cookie также не удаляются.

1 Ответ

0 голосов
/ 16 апреля 2020

Я довольно новичок в koa-session , но смог реализовать аутентификацию пользователя в проекте некоторое время назад, установив для объекта id пользователя значение ctx.session.id.

Login

router.post('/login', async ctx => {
  const userDetails = ctx.request.body
  try {
        const userDetails = ctx.request.body
        const userId = await user.login(userDetails)
        ctx.session.authenticated = true
        ctx.session.id = userId
        ctx.redirect('/')
    } catch (error) {
        await ctx.render('login', {error: error})
    } finally {
        await user.tearDown()
    }
})

Выход из системы

router.get('/logout', async ctx => {
    if (ctx.session.authenticated === true) {
        ctx.session.authenticated = false
        ctx.session.id = undefined
    }
    ctx.redirect('/')
})

В вашем случае вы можете назначить ctx.session.user = userObject, затем при выходе из системы переназначить ctx.session.user = null.

...