postgresql - 如何使用 node 和 express 从 JWT 身份验证中获取用户详细信息?

标签 postgresql jwt sequelize.js

在遵循了许多无效的教程(grrr ...)之后,我终于让 JWT 身份验证正常工作了。我可以添加一个用户,然后使用 Postman 登录并获取 JWT 字符串。我可以将它添加到我的标题并从数据库中返回值。耶!

但是,虽然这可以让我验证用户使用该站点的身份,但它并没有限制内容(目前)。这是我的挑战...

给定一个 JWT 字符串,我如何获取与其相关的用户的用户 ID,以便我可以在我的 SQL 查询中传递它并根据用户限制结果?

现在,以下工作:

router.get('/log', passport.authenticate('jwt', { session: false}), function(req, res) {
  var token = getToken(req.headers);
  if (token) {
    db.sequelize.query(`
        SELECT * FROM json_log(:vuserId)
        `,
        {
          replacements: {vuserId: req.body.vuserId},
          type: sequelize.QueryTypes.SELECT
        }
    )
      .then((changes) => res.status(200).send(changes))
      .catch((error) => { res.status(400).send(error); });
  } else {
    return res.status(403).send({success: false, msg: 'Unauthorized.'});
  }
});

如果我在 get 请求的正文中传递以下内容:
{
  "vuserId": 1
}

但是鉴于我在 header 中传递 JWT,这肯定可以告诉我用户 ID 是什么?

最佳答案

好的,经过更多搜索,我找到了答案。我添加了“npm install atob”,然后将以下内容放在页面顶部:javascript const atob = require('atob');并在 'if (token) {' 行之后添加以下行: javascript var decodedValue = JSON.parse(atob(token.split('.')[1])) 然后我可以在适当的位置引用 'decodedValue.id'请求正文中的“1”。

关于postgresql - 如何使用 node 和 express 从 JWT 身份验证中获取用户详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440845/

相关文章:

jwt - 如何在asp.net core 2.0中允许多个具有不同发行者的JWT

sql - 将sequelize查询转换为knex

mysql - 与 MYSQL Sequelize 的一对多关系

linux - 当linux上安装了多个postgresql时,如何添加另一个postgres用户名?

database - 如何扩展此查询

database - 在卖家有很多产品和产品有很多卖家的 Postgresql 数据库中,价格应该存储在哪里?

postgresql - 如何获取 INNER join 的计数和所有项目的计数?

node.js - Node : Sending JSON Web token to client with page redirect

react-native - 在 React Native Expo 应用程序中解码没有 key 的 JWT token

node.js - Sequelize typescript Sequelize typescript TypeError : Class constructor Model cannot be invoked without 'new'