首页 > 解决方案 > 如何防止 JWT 令牌过载

问题描述

我将 jwt 令牌与 node.js npmjsonwebtoken一起使用以管理我的用户身份验证。在此之上,我将用户权限添加到有效负载中,其中包含用户读取和写入哪个部分。

像这样:

const payload = {
  user: {
    id: user.id,
    permissions: user.account_permissions
  }
};

jwt.sign(
  payload,
  config.get('jwtSecret'),
  { expiresIn: TIME},
  (err, token) => {
    if (err) throw err;
    res.json({ token });
  }
);

account_permissions对象看起来像这样:

 const permissions = {
    platform: 'Management',
    sections: [
      {
        sectionName: 'setup',
        read: true,
        write: true
      },
      {
        sectionName: 'chat',
        read: true,
        write: true
      },
      {
        sectionName: 'maintenence',
        read: true,
        write: true
      },
      {
        sectionName: 'classes',
        read: true,
        write: true
      },
      {
        sectionName: 'income',
        read: true,
        write: true
      },
      {
        sectionName: 'announcements',
        read: true,
        write: true
      },
      {
        sectionName: 'messages',
        read: true,
        write: true
      }
    ],
    school: shoolID
  };

我的问题是;每个用户都可以拥有不同平台的许多权限对象,在这种情况下,这会使 jwt 令牌非常大(有时甚至会在标头中发送)。我有一个中间件检查每条路由中的用户权限,我试图避免将数据保存在数据库中以保存数据库调用。我怎样才能避免这种超载。

标签: node.jsexpressjwt

解决方案


推荐阅读