【问题标题】:When is a string not a string when using JWT?使用 JWT 时字符串何时不是字符串?
【发布时间】: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


【解决方案1】:

我相信token 是一个空字符串

export async function decodeJwt(token: string): Promise<string> {

你能查一下吗?

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 2013-02-28
    • 2011-03-08
    • 2012-08-20
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多