Koa2中使用ctx.cookie.get(name)得不到值
发布于 6 年前 作者 hsyq 4081 次浏览 来自 问答

使用get请求可以写cookie,读cookie,使用post请求读写cookie失败。 代码如下。

// post 用户登录
router.post('/user/login', async (ctx, next) => {
    let {username, pwd} = ctx.request.body;
 
    let result = await User.findOne({username});
    console.log(result)
    if(!result){
        return ctx.body = {
            code:0,
            msg: '用户名不存在'
        }
    } else if(result.pwd === md5Pwd(pwd)) {
        console.log(result._id);     
        ctx.cookies.set('userid', result._id);
        console.log(ctx.cookies.get('userid'));          // undefined

        return ctx.body = {
            code:1,
            msg: '登录成功',
            data: result
        }
    }
})

2 回复
ctx.cookies.set('userid', 'xxx');
ctx.cookies.get('userid');

以上两行代码与变量的取值赋值不是一回事,set是在这次的response中添加一个set-cookie头部,而get是读取request中的cookie头部,你这里输出undefined,是因为客户端在调用这个post请求的时候没有携带cookie

楼上回答是正确的,ctx.cookies.set(‘userid’, result._id); 这个必须在下次访问的时候才能获取到userid。

回到顶部