2012-01-28 2 views
2

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

Но когда я добавляю аутентификацию через Twitter, эта система выходит из строя с Twitter won't publish the email of the user.

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

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

ответ

0

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

0

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

Смежные вопросы