在 koa-session 中销毁会话

Destroying a session in koa-session

所以我有一个简单的授权系统,登录用户被保存到会话中。问题是在这种情况下,我想删除一个会话,从而将用户注销,会话进行下一个请求。

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

所以在这种情况下,下面的代码将在注销重定向后在页面上呈现用户信息:

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

Cookie 也没有被清除。

我是 koa-session 的新手,但不久前能够通过将用户的 id 对象设置为 ctx.session.id.

在一个项目中实现用户身份验证

登录

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