Ленивая загрузка req.user, с express и паспортом? - PullRequest
1 голос
/ 26 апреля 2020

Мы используем express и для определенных операций хотим проверить данные вошедшего в систему пользователя. Мы бы предпочли избегать попадания в БД каждый раз при заполнении req.user, было бы хорошо загружать данные, только если они читаются. Конечные точки API защищены JWT, который проверяется при каждом доступе.

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 27 апреля 2020

Существует несколько решений:

  1. Вы можете поместить эти данные непосредственно в JWT, поэтому вся эта информация доступна без вызова db. Это не жизнеспособно, если есть некоторые секреты / пароли или если данные, которые вам нужны, могут часто меняться (так как они будут оставаться старыми в JWT до refre sh).

  2. Самый простой способ это просто использовать метод. Вместо req.user вызовите req.getUser() или используйте функцию getUser(req). Внутри этой функции вы можете написать все свои бизнес-логи c, что было бы похоже на - проверьте, сохранен ли пользователь в req._user. Если это так, верните его. Если нет, загрузите его из базы данных, сохраните в req._user и верните его.

  3. Да, есть способ обработать «получение» свойств непосредственно из req.user, хотя Я хотел бы избежать этого и использовать один из предыдущих вариантов, если это возможно. Если у вас есть какой-то старый код со старым node.js, вы можете использовать этот устаревший метод https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/ defineGetter , если вы используете современный node.js, то это путь сейчас https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

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