Дизайн пользовательской модели при использовании OAuth - PullRequest
1 голос
/ 27 ноября 2010

В настоящее время я создаю веб-приложение (мое первое) и хотел включить возможность OAuth, чтобы пользователи могли войти через Twitter и Facebook.Я строю его в Синатре и посмотрел на драгоценный камень OmniAuth, который, кажется, как раз подходит для этой работы.У меня возникла проблема с изменением модели User.

В настоящее время у меня есть обычное имя, фамилия, имя пользователя, адрес электронной почты и пароль, причем имя пользователя уникально, так что я могу использовать его для идентификатора, и, как и в твиттере, я могу набрать www.myapp.com / username, чтобы найти информацию об этом пользователе.Я решил, что для первоначальной версии я просто буду использовать твиттер в качестве логина, потом фейсбук и, наконец, обычную регистрацию.Моя проблема в том, что более вероятно, что люди будут иметь те же имена пользователей в Facebook, что и в Twitter.Так, например, если я войду в систему с помощью твиттера и возьму идентификатор «newuser», это будет проблемой, когда кто-то с таким же именем пользователя из Facebook попытается присоединиться.

Драгоценный камень OmniAuth работает, предоставляя хэш информации о пользователе.Я собираюсь использовать Mongo, поэтому я могу включить в твиттере поле Twitter и Facebook и хранить там хэши, я просто немного озадачен тем, как создать уникальный идентификатор, когда более чем вероятно, чтов обеих службах будут люди с одним и тем же именем пользователя, или что после внедрения обычного входа в систему кто-то может зарегистрироваться и взять имя пользователя, которое уже используется в твиттере или фейсбуке, не давая тем людям зарегистрироваться в своем твиттере / фейсбукесчета.

Мне было бы действительно интересно услышать, как другие подошли к этому.

1 Ответ

1 голос
/ 27 ноября 2010

Я использую таблицу только для ключей авторизации, это означает: user_id,: provider,: ключевые столбцы и отдельную таблицу User,: email,: псевдоним, ...

Если пользовательВойдите в систему со своей учетной записью Twitter, выйдите из системы и войдите с помощью Google Acc.например, тогда у вас будет две разные учетные записи, и нет решения связать их с существующей учетной записью.Я предлагаю вам разрешить вошедшему в систему пользователю связывать свою текущую используемую учетную запись с другим поставщиком аутентификации (вы должны отделить пользователя от аутентификации, и после первого входа он должен иметь возможность связать больше ключа авторизации со своей учетной записью пользователя).Он входит в свою основную учетную запись пользователя (например, с помощью твиттера) и связывает свою учетную запись пользователя со своей учетной записью Google, нажимая значок Google на странице авторизации.

...