Работа с несколькими системами входа (Facebook Connect, Google Account и др.) - PullRequest
3 голосов
/ 24 июня 2009

Если вы хотите, чтобы пользователи вашего сайта могли входить через Facebook Connect, учетную запись Google и т. Д., Как вы проектируете свою базу данных, чтобы они все были интегрированы?

Ответы [ 3 ]

2 голосов
/ 24 июня 2009

Я предлагаю использовать таблицу «Учетные записи» для хранения данных вашей локальной учетной записи, которые затем будут связаны с таблицей AthenticationMethods или таблицей учетных данных, в которой будут храниться связанные данные внешней аутентификации. Это позволяет вашему сайту и всей его сложности быть связанным с Аккаунтами и процессом входа в систему, чтобы красиво абстрагировать различные формы аутентификации, которые вы, возможно, захотите поддерживать. Учитывая, что каждый метод аутентификации может иметь разные уровни сложности, я предлагаю взглянуть на различные API и дать перекрестные ссылки на них, чтобы найти общие сходства. Более важно, что вы захотите определить, где они различаются, чтобы таблица учетных данных могла обрабатывать различные биты данных, которые может потребоваться каждому API. Не забудьте включить OpenID!

0 голосов
/ 12 августа 2009

Вы уверены, что хотите хранить информацию, отличную от «логин»: «пароль»? Я бы порекомендовал вам, чтобы у вас было перечисление для сохранения системы входа пользователя.

0 голосов
/ 24 июня 2009

Я использую два поля в своей локальной учетной записи или пользовательской таблице. Один из них называется "externalSystemId" (TINYINT), а другой - "externalId" (DOUBLE). У меня есть некоторые константы кода, которые определяют различные значения externalSystemId, т.е. EXTERNAL_SYSTEM_FACEBOOK = 1, EXTERNAL_SYSTEM_OPENID = 2 и т. Д. ExternalId - это, конечно, идентификатор пользователя из этой системы.

Во время обработки объекта User в моем коде я могу легко определить, из какой системы находится пользователь, и загрузить соответствующие механизмы кода для аутентификации или отображения чего-либо, соответствующего системе, на основе externalSystemId.

Обратите внимание, что вы, возможно, захотите использовать таблицу базы данных для хранения записей внешних систем, а не констант кода, в зависимости от того, с кем вы собираетесь иметь дело, и от того, нужна ли вам куча дополнительной информации о системе.

...