Нормальна ли практика идентефикации юзера по почте при условии того что провайдеров для логина больше одного?
Например у меня в проекте возможен логин через два провайдер. Гугл и фейсбук.
Я не особо понимаю как это должно работать если почта на фейсбук и гугл одна и та же.
1. Юзер логинится через фейсбук, я получаю его имя, эмейл, фотку. Вывожу ее, сохраняю данные юзера себе в бд, чтобы потом например получить список "избранного" этого юзер
2. Этот же юзер, выходит из аккаунт и логинится через гугл с такой же почтой которая былы привязана и к фейсбуку, в итоге я не сохраняю юзера в бд, так как такая почта уже существует
В итоге все дальнейшие манипуляции с аккаунтом юзера я провожу через почту, то есть идентифицирую его через почта.
Юзер нажал лайк, я делаю запрос в бд с почтой текущего юзера и записываю текущий пост как лайкнутый.
Все что я описал это корректная практика?Или как делают обычно?
Дополнительно:
Эти openid провайдеры (гугл, фейсбук, одноклассники и проч) любят по желанию задней пятки блокировать "приложение", к которому привязана аутентификация.
В результате ваши пользователи в один прекрасный день не смогут залогиниться.
А если зарегать новое "приложение", то эти же пользователи будут там проиходить под новыми айдишниками (ну внутри гугла, а в этом openid, т.е. для вас они будут выглядеть как новые пользователи).
Но исходя из вышеописанного я бы при авторизации всегда бы запрашивал у oauth-провайдера email и идентифицировал бы юзера уже по нему. Заодно и есть куда письмо послать в случае чего. В т.ч. в случае восстановления доступа к аккаунту.
Например у меня в проекте возможен логин через два провайдер. Гугл и фейсбук.
не все соцсети отдают почту юзеров, но все отдают его уникальный идентификатор внутри своей сети. Поэтому ты должен сохранять информацию об внешнем id и из какой он соцсети. А еще юзер может поменять почту, в одной соцсети, а в другой нет, и т.п.
Юзер нажал лайк, я делаю запрос в бд с почтой текущего юзера и записываю текущий пост как лайкнутый.
нет, почту ты используешь только для идентификации юзера, вся внутренняя работа уже не с ней, а с внутренними id.
- прблема в том что текущие провайдеры почему то не отдают мне айди
- окей, ошибка. Получаю айди, но только при логине, то есть во время сессии я его уже получить не могу, то есть мне его надо где то сохранить, но где обычно хранят такие данные?
- godsplane, в базе хранят
- godsplane, по идее ты можешь с полученным токеном запросить снова личные данные пользователя.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Идентификация пользователя по электронной почте является распространенной практикой во многих веб-сервисах. Однако, при наличии нескольких провайдеров для входа (например, Google, Facebook, Twitter), важно оценить некоторые важные моменты.
1. Удобство для пользователя: Использование электронной почты для идентификации пользователя является удобным и привычным способом для большинства пользователей. Они могут использовать одну и ту же электронную почту для входа в различные провайдеры.
2. Безопасность: Важно обеспечить безопасность данных пользователей при использовании электронной почты для идентификации. Рекомендуется использовать дополнительные механизмы аутентификации, такие как двухфакторная аутентификация, чтобы защитить учетные записи пользователей.
3. Конфиденциальность: При использовании электронной почты для идентификации пользователя необходимо обеспечить конфиденциальность личных данных. Важно хранить информацию о пользователях в зашифрованном виде и следовать стандартам безопасности данных.
4. Возможность выбора провайдера: Пользователям следует предоставить возможность выбора провайдера для входа, если у них есть несколько учетных записей. Например, они могут использовать Google для одной учетной записи и Facebook для другой.
Итак, использование электронной почты для идентификации пользователя при наличии нескольких провайдеров для входа может быть нормальной практикой, но важно учитывать аспекты безопасности, конфиденциальности и удобства для пользователей. Важно также следовать лучшим практикам в области защиты данных и обеспечения безопасности учетных записей пользователей.
// Пример использования электронной почты для идентификации пользователя $user_email = "user@example.com"; $password = "password123"; // Проверка существования пользователя в базе данных if (check_user_exists($user_email)) { // Проверка правильности пароля if (check_password($user_email, $password)) { // Вход пользователя в систему login_user($user_email); echo "Пользователь успешно вошел в систему"; } else { echo "Неверный пароль, попробуйте снова"; } } else { echo "Пользователь с такой электронной почтой не найден"; }