Что делать если у юзера много соцсетей при авторизации?
Внедряю авторизацию через соцсети. Предлагают добавить network_id в users и так авторизовывать. Но что делать если network_id может быть несколько? Т.к. у юзера может быть и гугл и фесбук и мало ли что он там нажмет. Получается нужно делать новую таблицу для данных с соцсетей с user_id, связывать с users и писать туда все соцсети через которые он захочет зайти. Это правильный подход?
Можно не мучиться и использовать готовые решения - называется Identity Server. Можно поставить самому: Keycloak, например. Или попробовать SaaS: Auth0. Я назвал только самых ярких представителей.
Если же хочется сделать самому то надо организовать маппинг токенов из соцсетей и пользователей в своей системе, а так же делать не мало так элементов управления всей этой махиной
Да я уже использую решение от Laravel. Заморочек там нет, т.к. готовые провайдеры, отдаешь название провайдера через роут и он тебе возвращает юзера с соцсети. Вопрос про бд больше т.к. везде в сети примеры для одной соцсети и network_user_id пишут в users и получается нужно либо network_user_id обновлять, либо авторизовывать с одной сети, что бред. Пока сделал вторую таблицу с user_id + данные соцсети. Обнулил email/password. При регистрации ищет юзера по провайдеру и network_user_id если не находит то создает, если находит то логинет. Это я на ходу все сочиняю, хз как будет работать)
Иван Шумов, так а что там после этого провайдера делать? Юзера сохранить или в отношениях найти существующую соцсеть для проверки пере авторизацией. Это несколько строчек кода. В ларавел с отношениями это очень просто. Если я, конечно, правильно понимаю, как это работает т.к. делаю впервые. Мне интересно другое. Живая это схема в отдельной таблице соцсети хранить, так делается или в users пишут?
Почему не хочу-то? Я хочу и сделал. Мой вопрос спрашивает насколько это правильный способ. Практика это или нет. В одну таблицу точно не вариант. 4 соцсети по 3 поля в таблице для каждой (название, id, ссылка) и уже +12 полей к users в одной куче. Я сделал отдельную таблицу с user_id и hasMany отношением на нее с User. Выглядит хорошо посмотрю как работать будет.