请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

koa-generic-session 会自动同步 ctx.session 到 redis 中去么?

老师, 之前的课程中定义了redis的get和set方法,但是并没有使用,我们通过写 ctx.session 的方式,依然实现了 redis 信息的写入,比如下面这些

// /josn测试路由
router.get('/json', async (ctx, next) => {
    const session = ctx.session
    if (session.viewNum == null) {
        session.viewNum = 0
    }
    session.viewNum++

    // throw new Error()
  
    ctx.body = {
        // title: 'koa2 json'
        viewNum: session.viewNum
    }
})


/**
 * 登录
 * @param {Object} ctx koa ctx
 * @param {string} userName 用户名
 * @param {string} password 密码
 */
async function login(ctx, userName, password) {
    // 登录成功 ctx.session.userinfo = xx
    const userInfo = await getUserInfo(userName, doCrypto(password))
    if (!userInfo) {
        // 登录失败
        return new ErrorModel(loginFailInfo)
    }

    // 登录成功
    if (ctx.session.userInfo == null) {
        ctx.session.userInfo = userInfo
    }
    return new SuccessModel()
}

上面的这个逻辑里面, 我们并没有显式的调用 redis 的set方法, 但是redis里面的确有session信息,
是不是由于我们注册了 koa-generic-session 中间件,当我们操作 ctx.session 的时候,中间件会自动的去同步redis信息?(基础课程里面这个同步需要我们手动的去执行)

正在回答

1回答

是的,这些同步 redis 的事情,中间件都自己做了,不用我们手动去写。

0 回复 有任何疑惑可以回复我~
  • 提问者 Arya_Stark #1
    谢谢老师!
    回复 有任何疑惑可以回复我~ 2019-11-03 16:10:17
  • 老师,这里并没有设置reids 过期时间啊,需要怎么设置?
    回复 有任何疑惑可以回复我~ 2019-11-25 11:36:26
  • 双越 回复 宋大神 #3
    在配置 session 时,配置 cookie 的过期时间,会自动不同为 redis 的过期时间。
    回复 有任何疑惑可以回复我~ 2019-11-25 19:33:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信