以值为对象创建JSON格式的res.cookie

creating res.cookie in JSON format with value as object

本文关键字:格式 res cookie JSON 创建 对象      更新时间:2023-09-26

我试着创建这样的res.cookie:

function createCookie(res, loginToken, user) {
  res.cookie(
    'testcookie',
    {
      'logintoken': loginToken.cookieValue,
      'user_id' : user.id,
      'username' : user.name
    },
    {
      expires: new Date(Date.now() + 2 * 604800000),
      path: '/'
    }
  );
}

然后,当收到请求时,我会像这样访问cookie:

console.log (req.cookies)

我得到这个输出:

 { 
   ...
   testcookie: '[object Object]'
 }

如果我尝试这样做:

  JSON.parse(testcookie)     // it errors not not being a valid JSON object
  JSON.stringify(testcookie)   // does not help either.

如何在JSON对象中发送res.cookie,稍后从req对象中读取后可以解析该对象?

请提供指针?

Object传递给res.cookie()并将其自动字符串化为JSON的选项是Express3.x的一项新功能。

对于Express2.x,您需要在创建cookie时自己stringify

function createCookie(res, loginToken, user) {
  var jsonValue = JSON.stringify({
    'logintoken': loginToken.cookieValue,
    'user_id' : user.id,
    'username' : user.name
  });
  res.cookie(
    'testcookie',
    jsonValue,
    {
      expires: new Date(Date.now() + 2 * 604800000),
      path: '/'
    }
  );
}

可能还得自己parse

var testcookie = JSON.parse(req.cookies.testcookie);