gpt4 book ai didi

node.js - Nestjs websocket 网关,如何从握手中解析签名的 cookie 以进行 guard 授权?

转载 作者:行者123 更新时间:2023-12-05 03:56:20 24 4
gpt4 key购买 nike

我的守卫包含以下代码:

    let client: Socket = context.switchToWs().getClient();
const sessionCookie = client.handshake.headers.cookie
.split('; ')
.find((cookie: string) => cookie.startsWith('session'))
.split('=')[1];

const sessionId = cookieParser.signedCookie(
sessionCookie,
process.env.CryptoKey,
);

console.log('SESSION ID',sessionId);

调用 cookieParse.signedCookie() 后得到的 sessionId 仍然是签名的;

client.request.cookies 和 signedCookies 都是未定义的。

session ID 在那里,浏览器正在发送 cookie,但我无法在网关中解析它。

最佳答案

我遇到了同样的问题并找到了答案。您的代码很接近,但是 cookieParser.signedCookie(...) 再次返回签名 cookie 的原因是因为 cookie 值中的某些字符已编码。因此它不会将该字符串检测为已签名的 cookie。

要解决此问题,您必须将 decodeURIComponent(sessionCookie) 传递给 cookieParser。

    let client: Socket = context.switchToWs().getClient();
const sessionCookie = client.handshake.headers.cookie
.split('; ')
.find((cookie: string) => cookie.startsWith('session'))
.split('=')[1];

const sessionId = cookieParser.signedCookie(
decodeURIComponent(sessionCookie),
process.env.CryptoKey,
);

console.log('SESSION ID',sessionId);

关于node.js - Nestjs websocket 网关,如何从握手中解析签名的 cookie 以进行 guard 授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com