Laravel, как связать логин между 2 сайтами?
В настоящее время я использую Laravel Socialite для связи между Facebook и моим первым сайтом. У меня есть 2 сайта, которые уже опубликованы, скажем, first_web.com и second_web.com.
То, что я пытаюсь сделать, это то, что после входа пользователя (используя учетную запись Facebook) в first_web.com, в любое время, когда пользователь хочет перейти на second_web.com, он автоматически входит в систему с помощью учетной записи Facebook.
Я сделал свое исследование, но нет учебника или образца, который сделал бы это. Есть идеи как этого добиться?
1 ответ
На мой взгляд, это можно решить следующим образом: (но я должен предупредить, что лично мне не нравится способ входа на несколько веб-сайтов за один запрос аутентификации, и есть лучший способ сделать это в соответствии с его потребностями - использовать метод call-to-auth, как Google, когда вы перенаправляете на их веб-сайт и выбираете свою учетную запись google - одно перенаправление на один вызов):
Прежде всего вы должны понимать, что вы должны сохранить токен в обоих клиентских браузерах - на обоих ваших веб-сайтах нет возможности использовать один и тот же JWT или Cookie на нескольких веб-сайтах - это небезопасно, небезопасно и не логично, поэтому вам нужно создать два токена. (Я не говорю о сайтах с одним доменом, я говорю о разных сайтах на разных доменах)
Вы можете использовать подход JSON Web Token JWT. Для вашего проекта вы можете использовать Laravel Passport или https://github.com/tymondesigns/jwt-auth соответствии с руководством по установке.
После успешного вызова API Socialite - вы должны создать токен JWT (используя пакеты из пункта № 1) и сохранить его в клиентском браузере для первого веб-сайта - Cookie или JavaScript-local Storage - выберите сами, какой путь лучше для ваших нужд. (вы найдете тонны примеров в поиске по этому поводу).
Затем с первого веб-сайта сделайте AJAX-вызов (из используемой клиентской среды JavaScript) в API с уже заданными учетными данными - вы будете перенаправлены, выбрав свой социальный аккаунт и т. Д.
А теперь я хотел бы задать вопрос с модальным окном - "Хотите поделиться своими данными на нашем сайте № 2", и здесь есть второй вызов API Socialite с перенаправлением. Невозможно запретить использование многократного перенаправления на ваш социальный сайт из-за внутренней безопасности большинства поставщиков социальных сетей.
Перенаправьте после вашего API для второго веб-сайта и сохраните второй токен во втором веб-сайте клиента-браузера.
Сделайте ваш редирект на ваш первый веб-сайт.
Мой личный совет - не делай этого в любом случае. Сделать дифференциальную аутентификацию на ваших сайтах не так проблематично. Более небезопасно использовать способ, которым вы задавали вопросы.
Удачи!