我正在使用 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不像平常那样显示对象的内容?
我认为这与你检索 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);