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

时间:2013-07-30 04:28:05

标签: javascript node.js

我试过创建一个像这样的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对象读取后解析它?

请提供指示?

1 个答案:

答案 0 :(得分:2)

Object传递给res.cookie()并将其自动字符串化为JSON的选项为new feature of Express 3.x

对于Express 2.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);