正在创建 JSON cookie,但类型是 String?

问题描述 投票:0回答:1

我正在使用 Node v21.7.1,我使用的是 cookie,而不是 Express。我的选择:

var dtTomorrow = new Date();
dtTomorrow.setDate(dtTomorrow.getDate() + 1);
var objOptions = {expires:dtTomorrow, httpOnly:true, overwrite:true}
   ,objCookie = new cookies(request, response)
   ,objLoggedIn = objCookie.get(consts.COOKIE_LOGGED_IN, objOptions);

以上全部在我的会话处理程序中,COOKIE_LOGGED_IN:

const COOKIE_LOGGED_IN = "loggedin";

当我登录系统时,我在同一函数的另一个位置创建 cookie:

objCookie.set(consts.COOKIE_LOGGED_IN, {cmpy:strCmpyKey
                                      ,biUID:biUID}, objOptions);

登录后,我可以看到 cookie 已创建,但是当我获取 cookie 并向控制台报告时:

console.log("typeof objLoggedIn[" + (typeof objLoggedIn) + "] value: ");
console.dir(objLoggedIn);

我在控制台中看到的内容:

typeof objLoggedIn[string] value:
`[object Object]`

为什么类型是string,为什么dir不像平常那样显示对象的内容?

javascript node.js cookies
1个回答
0
投票

我认为这与你检索 cookie 的方式有关。在您的代码中, objLoggedIn 被分配了 objCookie.get(consts.COOKIE_LOGGED_IN, objOptions) 的返回值。此方法可能返回 cookie 值的字符串表示形式,而不是存储在 cookie 中的实际对象。如果 get 方法返回一个字符串,您可以尝试使用 JSON.parse() 或类似方法将其解析为对象。也许尝试这样的事情,

var objLoggedInString = objCookie.get(consts.COOKIE_LOGGED_IN, objOptions);
var objLoggedIn = objLoggedInString ? JSON.parse(objLoggedInString) : null;

console.log("typeof objLoggedIn[" + (typeof objLoggedIn) + "] value: ");
console.dir(objLoggedIn);
© www.soinside.com 2019 - 2024. All rights reserved.