Как предотвратить перегрузку токена JWT - PullRequest
1 голос
/ 09 марта 2020

Я использую токен jwt с node.js npm jsonwebtoken для управления аутентификацией моих пользователей. выше, я добавляю к полезной нагрузке пользовательские разрешения, которые содержат чтение и запись в какой раздел.

примерно так:

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 очень большим (иногда большим, чтобы его можно было даже отправить в заголовке). У меня есть промежуточное ПО, которое проверяет пользовательские разрешения на каждом маршруте, я пытаюсь избежать сохранения этих данных в базе данных, чтобы сохранить вызовы базы данных. как я могу избежать такой перегрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...