使用节点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.
我在哪里错了,谢谢。
答案 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);
}
现在您有了用户个人资料。