Как мне управлять пользователями, которые вошли в систему через OAuth? - PullRequest
0 голосов
/ 02 марта 2011

Считайте, что у меня есть пользовательская таблица, которая получает пользовательские данные.У меня есть 2 случая, когда люди могут зарегистрироваться для моего сайта.

случай 1. Люди просто вводят всю информацию, необходимую для регистрации моего сайта.(старый классический способ)

case 2. Я установил OAuth, где люди могут использовать Twitter или другую систему аутентификации (предоставляющую OAuth API) для входа на мой сайт.Таким образом, эти пользователи на самом деле не будут вводить свои

. Каким образом я должен хранить пользователей, которые входят через случай 2 на моем сайте?Должен ли я просто хранить их информацию (которую я бы выбрал, используя OAuth API) в качестве идентификатора пользователя, а токены - в качестве пароля?Или я должен заставить их зарегистрироваться еще раз с предоставленной информацией?

Как лучше всего управлять делом 1 и делом 2?Может кто-нибудь рассказать мне свой собственный опыт с этим?

Ответы [ 2 ]

5 голосов
/ 02 марта 2011

То, как мы это сделали на нашем сайте, заключается в том, чтобы отделить идею User от их Authentication.Пользователь может иметь любое количество аутентификаций, хранящихся в отдельной таблице.Они могут использовать любую связанных с ними аутентификаций для входа в систему. Поэтому у нас может быть следующее:

User:
  id: 1
  username: brandon_tilley
Authentication:
  id: 1
  user_id: 1
  type: password
  data: {"password": "super-secret"}
Authentication:
  id: 2
  user_id: 1
  type: oauth2
  data: {"token": "0123456789abcdef", "oauth_id": "543210"}

Теперь, когда кто-то пытается войти на ваш сайт с именем пользователя ипароль, вы можете найти соответствующую запись Authentication с типом password и user_id, которые соответствуют имени пользователя;если вместо этого кто-то пытается войти через OAuth2, вы можете увидеть, есть ли Authentication со связанными token и oauth_id в базе данных, и, если это так, войти в связанный пользователь.

0 голосов
/ 02 марта 2011

Это интересный вопрос и ответ, и я думаю о себе, так как это следующее обновление, которое я хочу сделать на своей CMS.

Итак, я понимаю, что вы говорите:

Когда кто-то пытается войти:

Проверьте их имя пользователя по таблице «users», затем проверьте тип аутентификации, который они используют, в таблице «authentications».

Если это просто сохраненный пароль, у них просто есть обычная учетная запись - войдите в систему.

Если они были сохранены с использованием OAuth и т. Д., Попытайтесь использовать хранимую информацию для удаленного входа в систему по своему выбору - в случае успеха зарегистрируйтесь.

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