如何查看存储在JWT中的数据?使用auth0和express-jwt

时间:2018-01-11 01:57:03

标签: node.js express jwt auth0 express-jwt

现在我相信我已经正确设置了大部分内容。 Auth0正在将jwt保存到客户端,然后客户端将其用于将来的请求。我使用express-jwt来验证令牌。从阅读Auth0文档,我想我需要客户端秘密(当我使用它来解码jwt我得到一个奇怪的错误:UnauthorizedError: error:0906D06C:PEM routines:PEM_read_bio:no start line)所以我只是想知道这个秘密密钥来自哪里? 感谢

2 个答案:

答案 0 :(得分:0)

根据OP的评论,要读取JWT正文的值,只需对其进行base64解码即可。您可以使用库,例如​​jwt-decode用于nodejs。

参见下面的示例用法(取自libME的README):

var jwtDecode = require('jwt-decode');
var token = 'eyJ0eXAiO.../// jwt token';

var decoded = jwtDecode(token);
console.log(decoded);

/* prints:
 * { foo: "bar",
 *   exp: 1393286893,
 *   iat: 1393268893  }
 */

您的令牌中的声明(此处称为ID令牌)取决于您在身份验证时提供的scope。例如,如果您使用scope: openid profile email,您将获得ID令牌中返回的所有内容。

在这里,假设JWT已经使用库进行了验证,现在您已经拥有了JWT,如果它是来自身体的声明,您还想阅读它。

答案 1 :(得分:0)

如果您使用的是express-jwt中间件,那么默认情况下,有效负载会保存在请求对象中,您可以像request.user

那样访问它

端点示例:

//jwtMiddleware is express-jwt middleware
app.get('/', jwtMiddleware, function (req, res) {
  console.log(req.user);
  res.send('hello world');
});