【问题标题】:The string to be decoded is not correctly encoded, Encoding done by JsonWebtoken要解码的字符串没有正确编码,编码由JsonWebtoken完成
【发布时间】:2019-12-01 17:50:18
【问题描述】:

在客户端解码使用节点 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.

我哪里错了,谢谢。

【问题讨论】:

    标签: local-storage json-web-token


    【解决方案1】:

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

    你必须安装这个库:

    npm install jwt-decode

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

    import * as jwt_decode from 'jwt-decode';

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

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

    现在你有了用户资料。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2016-04-04
      • 1970-01-01
      相关资源
      最近更新 更多