Я пытаюсь найти способ справиться с этой ситуацией.
Наличие этих таблиц в моей базе данных, связанных с "родными" пользователями и "внешними" пользователями, чтобы регистрировать "родных" пользователей и пользователей OpenId:
--native user--
id (primary key)
email (unique)
screen_name (unique)
--external user--
openid_id
native_user_id
Когда новый пользователь входит в систему с учетной записью OpenId, я создаю нового «нативного» пользователя и назначаю ему идентификатор учетной записи OpenId.Прежде чем я автоматически создаю этого нового «родного» пользователя, я пытаюсь получить некоторую информацию из OpenId, как имя и адрес электронной почты.Если присутствуют оба пользователя, пользователь зарегистрирован «магическим образом», но если в некоторых из этих полей отсутствуют некоторые из них, пользователю предоставляется форма, требующая от него заполнения информации.
Хорошо, теперь возникает моя проблема.
Если на сайте регистрируется новый пользователь OpenId, и OpenId выдает мне электронное письмо, которое уже назначено существующему собственному пользователю, как мне поступить?(Имейте в виду, что электронная почта является УНИКАЛЬНЫМ полем моей таблицы)
- Попросите его изменить электронную почту, хранящуюся в моей системе
- Назначьте этот OpenId для совпадения в моей базе данных ивойдите в систему пользователя.Вероятно, это тот же самый пользователь, который пытается войти с другим OpenId
- Запретить вход в систему, даже если это тот же пользователь, который пытается войти с другим OpenId.
- Запретить вход в систему,и предупредить посетителя, что он должен назначить новый OpenId своему пользователю, как только он вошел в систему.
Лично я думаю, что я должен пойти на 4, так как 1 может привести к тому, что люди случайно создадут нового пользователя для своего второгоOpenId аккаунт, не будучи замеченным.Для пути № 2 я думаю, что опасно утверждать, что новый OpenId соответствует тому же пользователю.Кто-то может создать учетную запись OpenId с электронной почтой, уже имеющейся в моей системе, чтобы получить доступ к этому нативному пользователю.
Как вы думаете?
PD: Я читал этот вопрос: Создайте нового пользователя с новым openid логином authlogic , но это не на 100% то, что я ищу.