Koa2中使用ctx.cookie.get(name)得不到值
使用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。