Как продолжить работу с новым пользователем OpenID - PullRequest
1 голос
/ 20 июля 2010

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

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

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

--external user--
openid_id
native_user_id  

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

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

Если на сайте регистрируется новый пользователь OpenId, и OpenId выдает мне электронное письмо, которое уже назначено существующему собственному пользователю, как мне поступить?(Имейте в виду, что электронная почта является УНИКАЛЬНЫМ полем моей таблицы)

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

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

Как вы думаете?

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

Ответы [ 2 ]

2 голосов
/ 20 июля 2010

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

0 голосов
/ 20 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...