【发布时间】:2020-07-31 16:30:32
【问题描述】:
我正在使用 JWT 并具有以下功能:
export async function decodeJwt(token: string): Promise<string> {
console.log('token is a string: ', typeof token === 'string');
const payload = await jwt.verify(token, RSA_PUBLIC_KEY);
console.log('payload: ', payload);
return payload;
}
然而,当它被调用时,token 变量的类型不是字符串。换句话说,第一行报告token 不是字符串。
这怎么可能?
我检查的原因是对jwt.verify() 的调用返回错误:
jwt must be a string
这很奇怪,因为我在这里用token 的字符串值调用它:
async function handleSessionCookie(token: string, req: Request) {
try {
const payload = await decodeJwt(token);
console.log('payload: ', payload);
req['userId'] = payload.sub;
} catch (err) {
console.log('handleSessionCookie Error: Could not extract user from the request: ', err.message);
}
}
一直是字符串。
发生了什么事?
【问题讨论】:
-
您好,token的typeof是什么?如果你在 decodeJwt() 中用 String(token) 转换它会发生什么?。
-
@OscarVelandia 感谢您的加入。我想通了——调用链中的第一个字符串是从 cookie 中提取的,并且作为对象进入。我会回答我自己的问题来解释这个问题。
标签: string typescript nestjs typeof