Как реализовать аутентификацию JWT в Loopback REST API? - PullRequest
0 голосов
/ 10 апреля 2019

Я довольно новичок в nodejs, поэтому я попытался реализовать REST API с помощью петлевой инфраструктуры, чтобы попытаться немного упростить процесс сборки. Я правильно сделал модели, также применил некоторые конечные точки, но при соединении с внешним интерфейсом (AngularJS) весь код, который я нахожу, а также код, который я знаю для построения, требует токен JWT для выполнения любой задачи, требующей авторизации / аутентификации, но кажется, что loopback посылает токен uid2, когда я вхожу в систему. Я много искал, в stackoverflow и Github, самое близкое, что я нашел, это (https://github.com/strongloop/loopback/issues/1905#issuecomment-310382322), но код, похоже, не работает здесь:

const data = jwt.verify(id, secretKey);
        cb(null, {userId: data.id});

Есть идеи?

1 Ответ

0 голосов
/ 10 апреля 2019

Проще говоря, вам нужно знать, кто звонит. Если бы вы использовали петлевую аутентификацию по умолчанию, вы бы увидели, что в объекте req есть свойство accessToken, которое идентифицирует пользователя. Если вы хотите использовать JWT, вы можете использовать множество готовых модулей, например. loopback-jwt или loopback-jwt-advanced .

В общем, вам нужно применить промежуточное программное обеспечение , которое будет отвечать за авторизацию вашего пользователя (я настоятельно рекомендую вам ознакомиться с термином middleware). Проще говоря, промежуточное ПО - это слой, через который проходят ваши запросы, и вы можете изменить его тело или отклонить запрос.

В абстрактных шагах, в вашем промежуточном программном обеспечении вам придется:

  1. получить токен из запроса
  2. проверить токен
  3. идентифицировать пользователя на основе токена
  4. создать петлевую сущность AccessToken для данного пользователя
  5. поместите токен в req.accessToken, так что теперь loopback будет знать, кто вы, и вы можете использовать ACL.

Так что это более или менее то, что делают эти расширения.

...