要解码的字符串未正确编码,编码由JsonWebtoken完成

时间:2017-06-11 17:14:23

标签: local-storage json-web-token

使用节点jsonwebtoken模块编码的客户端令牌解码方式是正确的,这就是创建令牌的方法

let token = jwt.sign({
   my_data: data,
   exp: parseInt(expiry.getTime() / 1000) 
}, "SECRET"); 

res.status(200).json({jwt_token: token });

在客户端,我使用localStorage保存令牌,如:

let token = server_response_token;
window.localStorage.setItem('client_token', token );

然后我尝试从本地存储解码令牌,如:

let payload = window.localStorage.getItem('client_token').split('.')[1];
let decoded = window.atob(payload);

但是我得到了一个错误:

Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

我在哪里错了,谢谢。

1 个答案:

答案 0 :(得分:1)

您不需要使用atob()函数来解码您的 JWT-TOKEN 。 此问题有一个jwt-decode组件。

您必须安装此库:

  

npm安装jwt-decode

并将其导入到要解码的组件中,例如:

  

从'jwt-decode'导入*作为jwt_decode;

现在拿您的令牌并对其进行解码。

  getUserProfile() {
    const idToken = localStorage.getItem('id_token');
    return jwt_decode(idToken);
  }

现在您有了用户个人资料。