【问题标题】:how to extract info from JWT token?如何从 JWT 令牌中提取信息?
【发布时间】:2021-10-22 17:12:57
【问题描述】:
这是我的令牌的生成方式:
const generate_web_token = function (user) {
const token = jwt.sign(
{
_id: user._id,
email: user.email,
password: user.password,
},
process.env.SECRET_TOKEN_KEY
);
return token;
};
现在,当客户端向服务器发送请求时,服务器如何提取例如_id字段?
【问题讨论】:
标签:
node.js
jwt
express-jwt
【解决方案1】:
标头和声明只是(网址安全)base64 编码。只有签名被加密和编码。因此,您可以将其拆分为 .,然后根据声明对中间部分进行解码。
const jwt = `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c`
const claims = atob(jwt.split('.')[1])
console.log(claims)
你可以在这里https://jwt.io/阅读更多关于令牌的信息。
由于您使用库来为您处理令牌,因此最好使用它的功能来执行此操作。
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');
// some time later
var decodedClaims = jwt.verify(token, 'shhhhh');
console.log(decodedClaims.foo) // bar