Обработка интеграции соцсетей в приложении MEAN-стека после входа пользователя в систему - PullRequest
0 голосов
/ 14 февраля 2019

Пользователь может создать учетную запись в моем приложении только со своей рабочей электронной почтой.

Пример: john@xyzcompany.com

После создания учетной записи он может связать несколько учетных записей социальных сетей со своим профилем.

Пример: john@gmail.com, john2@gmail.com

Я использую MEAN-стек для разработки приложения.

Когда пользователь входит в мое приложение, я создаю токен JWT для авторизации всех его будущих запросов к серверу.

Когда речь заходит об интеграции учетных записей социальных сетей, после успешной аутентификации я могу получать токены доступа из этих социальных сетей на URL-адрес обратного вызова.Мне нужно связать токены с нужным пользователем.Могу ли я в любом случае передать свой токен JWT вместе с URL-адресом обратного вызова, чтобы определить, какой пользователь сделал запрос, потому что я не могу идентифицировать пользователя по электронной почте в его учетной записи в социальной сети?

Мне удалось решитьэто с использованием socket.io.Но я чувствую, что нет необходимости использовать сокеты для простой аутентификации.

Есть ли другой подход для ее решения?Я исследовал онлайн, немногие из них предложили использовать паспорт.Я не совсем понимаю, как работает паспорт, я просто чувствую, что это просто промежуточное ПО для аутентификации запросов API от пользователей, что я в любом случае делаю с помощью пользовательской функции.

Может ли кто-нибудь объяснить, возможно ли передавать JWT в URL-адресах обратного вызова, используя стратегии паспорта?

Каков правильный подход для обработки таких аутентификаций в приложении стека MEAN?Я застрял в этой проблеме с прошлой недели, очень жду хорошего решения.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вы можете попробовать использовать аутентификацию Facebook на стороне клиента, как описано здесь

https://theinfogrid.com/tech/developers/angular/facebook-login-angular-rest-api/

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

в бэкэнде вы звоните в facebook, чтобы получить данные профиля из accessToken, а затем сохранить идентификатор профиля пользователя, и в зависимости от вашего бизнеса вам также может понадобиться сохранить токен доступа

0 голосов
/ 18 февраля 2019

Я сталкивался с подобным типом ситуации в одном из крупномасштабных приложений, для которых я работал, и подход, который мы использовали для его обработки, заключался в том, чтобы сохранить jwtToken в Redis, а затем получить его обратно с помощью пользовательских файлов cookie.Позвольте мне объяснить это более подробно -

  1. Отправить новый файл cookie для пользователя, когда пользователь откроет страницу входа.Файл cookie должен содержать некоторый уникальный идентификатор или код, против которого мы будем сохранять токен JWT.Например: res.cookie('jwtIdentifier', newid())
  2. Теперь, когда пользователь входит в систему, сгенерируйте токен JWT и сохраните его в свой файл Redis, используя значение cookie jwtIdentifier.Например: redisHelper.set(req.cookies.jwtIdentifier, JWTTOKEN)
  3. Наконец, когда вход выполнен успешно и пользователь перенаправлен обратно в ваше приложение, вы можете снова получить свой токен JWT для соответствующего пользователя, используя cookie.Например: redisHelper.get(req.cookies.jwtIdentifier) Это вернет вам токен JWT, который вы затем сможете использовать в своем приложении для этого конкретного пользователя.

Надеюсь, это понятно, дайте мне знать, если у вас есть какие-либо вопросы с этой реализацией;)

...