Как возобновить нового пользователя OpenID

Я пытаюсь найти способ стоять перед этой ситуацией.

Наличие этих таблиц в моей базе данных, связанной с "собственными" пользователями и "внешними" пользователями для входа "собственных" пользователей и пользователей OpenId:

--native user--
id (primary key)
email (unique)
screen_name (unique)

--external user--
openid_id
native_user_id  

Когда новый пользователь регистрируется с учетной записью OpenId, я создаю нового "собственного" пользователя и присваиваю ее, OpenId считают идентификатор. Прежде чем я автоматически создам этого нового "собственного" пользователя, я пытаюсь получить некоторую информацию из OpenId как имя и адрес электронной почты. Если оба - нынешний пользователь, регистрируется "волшебно", но если это испытывает недостаток в некоторых из этих полей, пользователю дарят форму, требующую, чтобы он заполнил информацию.

Хорошо, теперь прибывает моя проблема.

Если новый пользователь OpenId входит в систему сайт, и OpenId дает мне электронное письмо, которое уже присвоено существующему собственному пользователю, как я должен продолжить двигаться? (Примите во внимание, что электронная почта является полем UNIQUE моей таблицы),

  1. Попросите, чтобы он изменил электронную почту, сохраненную в моей системе
  2. Присвойте этот OpenId соответствию в моей базе данных и войдите в систему пользователь. Поскольку, вероятно, это - тот же пользователь, пытающийся входить в систему с другим OpenId
  3. Отклоните вход в систему, даже который, вероятно, является тем же пользователем, пытающимся входить в систему с diferent OpenId.
  4. Отклоните вход в систему и предупредите посетителя, что он должен присвоить новый OpenId его пользователю однажды его зарегистрированное.

Лично я думаю, что должен пойти для 4, поскольку 1 мог привести к людям, создающим случайно нового пользователя для его второй учетной записи OpenId без того, чтобы быть замеченным. Для пути nº2 я думаю, что это опасно, чтобы указать, что новый OpenId соответствует тому же пользователю. Кто-то мог создать учетную запись OpenId с электронным письмом уже в моей системе для получения доступа к тому собственному пользователю.

Что Вы думаете?

PD: я имею крытый тростником этот вопрос: Создайте нового пользователя с новым открытым входом в систему authlogic, но не 100%, что я ищу.

1
задан Community 23 May 2017 в 11:48
поделиться

2 ответа

Никогда не выбирайте вариант 2: как вы сказали, вы не хотите давать доступ не тому человеку. Помимо этого, вам решать, запрещать ли доступ или разрешать доступ, но попросить пользователя предоставить другой адрес электронной почты. Я не вижу особого смысла в отказе в доступе, потому что пользователи в любом случае могут создать новый OpenID с другим адресом электронной почты.

2
ответ дан 2 September 2019 в 22:56
поделиться

Почему бы не снять ограничение, согласно которому электронные письма должны быть уникальными? У вас есть уникальный идентификатор, экранное имя и (для некоторых пользователей) URL-адрес openid. Разве этого недостаточно?

0
ответ дан 2 September 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: