Где хранить пользовательскую информацию или любую другую контекстную информацию запроса в гнезде. js - PullRequest
0 голосов
/ 27 апреля 2020

Это скорее теоретический вопрос, чем проблема конкретного кода c. При использовании аутентификации JWT в моем API-интерфейсе nest. js после успешного завершения проверки токена и получения идентификатора пользователя, где я храню эту информацию в контексте выполняющегося запроса, чтобы использовать его глубоко в моем приложении (возможно, в службе или какой-либо другой службе). другой класс). Например, мне нужно обновить некоторое свойство записи в базе данных вместе с тем, кто ее обновил. Этот запрос базы данных может быть вложен глубоко в мое приложение без доступа к объекту запроса.

Обратите внимание, что идентификатор пользователя должен быть доступен только в контексте текущего запроса, а другой запрос потенциально может иметь другого пользователя Информация. Я прочитал о контексте выполнения на странице документации nest, но это не дает мне никакого представления.

1 Ответ

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

Обычная практика в NodeJS состоит в том, чтобы прикрепить идентификатор пользователя к свойству user объекта request. Вот как это делает passport , но имейте в виду, что, поскольку объекты Express и Fastify request различны, это может привести к некоторому другому поведению между двумя адаптерами. То, что вы будете делать после добавления идентификатора (обычно это делается в охране), находится в контроллере, получите идентификатор из req.user (это можно сделать, потянув весь запрос (@Request()) или создав индивидуальный декоратор )

...