Omniauth: отображение пользователей - PullRequest
2 голосов
/ 28 января 2012

У меня есть общий вопрос о построении пользовательской системы с Omniauth: когда я включаю более одного метода аутентификации, я хочу убедиться, что пользователь не сможет снова зарегистрироваться через другого провайдера - будь то случайно или намеренно,Я пытался проверить адрес электронной почты, это то, что работает для большинства провайдеров.

Но когда я добавляю аутентификацию через Twitter, эта система перестает работать, так как Twitter не публикует электронную почту пользователя .

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

Любая помощь или предложения приветствуются!

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Все, что вас действительно волнует, - это аутентификация пользователя, и после того, как он / она пройдет, вам нужно только отследить идентификатор пользователя, который аутентифицировался и какую службу он использовал для аутентификации. Поэтому, если человек вошел в систему с помощью твиттера и попытался войти в систему с помощью Facebook, ваш код должен знать идентификатор_пользователя (а не UID, если вы следили за рейкастами Райана Бэйта), связанный с этим пользователем в Твиттере, и этот пользователь Facebook должен иметь такой же user_id. Вы по-прежнему будете позволять ему проходить аутентификацию, используя второй сервис, но последним шагом будет проверка того, под каким сервисом user_id вошел (стихи, в которые они ПРОСТО вошли. Если сервисы отличаются, это означает, что они пытались проникнуть под вторым сервисом. И вы может справиться с этим.

0 голосов
/ 29 января 2012

У вас будет такая же проблема с LinkedIn.Кроме того, я лично использую разные адреса электронной почты для каждого сайта, к которому я присоединяюсь.Таким образом, даже если вы запросите мою электронную почту, это не поможет вам идентифицировать меня.Если вы используете только Omniauth, а не Devise, вы можете проверять каждый раз, когда пользователь входит в систему, чтобы увидеть, вошли ли они также с другими службами и объединить учетные записи.Это кажется ненужным, потому что люди обычно все время заходят в свои аккаунты в твиттере / фб.Пока вы проверяете оба, прежде чем обслуживать страницу регистрации, вы должны быть золотыми.Если вы действительно пытаетесь помешать людям иметь несколько учетных записей, вам нужно либо запросить и подтвердить номер мобильного телефона, либо строго полагаться на одного провайдера, который делает это.

...